home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 March: Reference Library / Dev.CD Mar 96 RL / Dev.CD Mar 96 RL.toast / Technical Documentation / develop / develop Issue 24 / develop Issue 24 code / Scriptable Database 1.0a11.sea / Scriptable Database 1.0a11 / Base / ObjectCache.cp < prev    next >
MacBinary  |  1995-10-17  |  38.8 KB  |  [TEXT/MPCC]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
1% dexvert MS-DOS Code Page Info (other/dosCodePage) ext Unsupported
1% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Tue Oct 17 16:30:19 1995, modified Tue Oct 17 16:30:19 1995, creator 'MPCC', type ASCII, 38699 bytes "ObjectCache.cp" , at 0x97ab 668 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% dearkID deark: macbinary default
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MPCC]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0e 4f 62 6a 65 63 74 | 43 61 63 68 65 2e 63 70 |..Object|Cache.cp|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 43 | 43 01 00 00 00 00 00 00 |.TEXTMPC|C.......|
|00000050| 00 00 00 00 00 97 2b 00 | 00 02 9c ac a9 c2 db ac |......+.|........|
|00000060| a9 c2 db 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 c1 51 00 00 |........|.....Q..|
|00000080| 2f 2a 0d 09 46 69 6c 65 | 3a 09 09 4f 62 6a 65 63 |/*..File|:..Objec|
|00000090| 74 43 61 63 68 65 2e 63 | 0d 0d 09 43 6f 6e 74 61 |tCache.c|...Conta|
|000000a0| 69 6e 73 3a 09 61 20 63 | 61 63 68 65 20 74 6f 20 |ins:.a c|ache to |
|000000b0| 6a 61 6d 20 64 61 74 61 | 20 69 6e 74 6f 0d 0d 09 |jam data| into...|
|000000c0| 57 72 69 74 74 65 6e 20 | 62 79 3a 09 42 72 75 63 |Written |by:.Bruc|
|000000d0| 65 20 48 6f 72 6e 2c 20 | 53 74 65 76 65 20 43 61 |e Horn, |Steve Ca|
|000000e0| 70 70 73 2c 20 4c 61 72 | 72 79 20 4b 65 6e 79 6f |pps, Lar|ry Kenyo|
|000000f0| 6e 2c 20 4a 6f 68 6e 20 | 4d 65 69 65 72 2c 20 73 |n, John |Meier, s|
|00000100| 63 6f 74 74 20 64 6f 75 | 67 6c 61 73 73 2c 20 44 |cott dou|glass, D|
|00000110| 61 72 69 6e 20 41 64 6c | 65 72 2c 0d 09 09 09 09 |arin Adl|er,.....|
|00000120| 50 61 75 6c 20 4d 65 72 | 63 65 72 2c 20 42 72 79 |Paul Mer|cer, Bry|
|00000130| 61 6e 20 53 74 65 61 72 | 6e 73 2c 20 44 61 76 65 |an Stear|ns, Dave|
|00000140| 20 4f 77 65 6e 73 0d 09 | 09 09 09 0d 09 09 09 09 | Owens..|........|
|00000150| 41 6e 64 79 20 4e 69 63 | 68 6f 6c 61 73 0d 0d 09 |Andy Nic|holas...|
|00000160| 43 6f 70 79 72 69 67 68 | 74 3a 09 a9 20 31 39 38 |Copyrigh|t:.. 198|
|00000170| 38 2d 31 39 39 35 20 62 | 79 20 41 70 70 6c 65 20 |8-1995 b|y Apple |
|00000180| 43 6f 6d 70 75 74 65 72 | 2c 20 49 6e 63 2e 2c 20 |Computer|, Inc., |
|00000190| 61 6c 6c 20 72 69 67 68 | 74 73 20 72 65 73 65 72 |all righ|ts reser|
|000001a0| 76 65 64 2e 0d 0d 09 09 | 20 3c 32 3e 09 20 32 2f |ved.....| <2>. 2/|
|000001b0| 32 34 2f 39 35 09 67 61 | 09 09 0d 2a 2f 0d 0d 23 |24/95.ga|...*/..#|
|000001c0| 69 66 64 65 66 20 4d 57 | 54 52 41 43 45 42 41 43 |ifdef MW|TRACEBAC|
|000001d0| 4b 54 41 42 4c 45 53 0d | 23 70 72 61 67 6d 61 20 |KTABLES.|#pragma |
|000001e0| 74 72 61 63 65 62 61 63 | 6b 20 6f 6e 0d 23 65 6e |tracebac|k on.#en|
|000001f0| 64 69 66 0d 0d 23 69 6e | 63 6c 75 64 65 20 22 4f |dif..#in|clude "O|
|00000200| 62 6a 65 63 74 43 61 63 | 68 65 2e 68 22 0d 23 69 |bjectCac|he.h".#i|
|00000210| 6e 63 6c 75 64 65 20 22 | 45 78 63 65 70 74 69 6f |nclude "|Exceptio|
|00000220| 6e 73 2e 68 22 0d 0d 2f | 2f 0d 2f 2f 20 46 6f 72 |ns.h"../|/.// For|
|00000230| 20 42 6c 6f 63 6b 4d 6f | 76 65 44 61 74 61 0d 2f | BlockMo|veData./|
|00000240| 2f 0d 23 69 6e 63 6c 75 | 64 65 20 3c 4d 65 6d 6f |/.#inclu|de <Memo|
|00000250| 72 79 2e 68 3e 0d 0d 2f | 2f 0d 2f 2f 20 46 6f 72 |ry.h>../|/.// For|
|00000260| 20 6d 65 6d 46 75 6c 6c | 45 72 72 0d 2f 2f 0d 23 | memFull|Err.//.#|
|00000270| 69 6e 63 6c 75 64 65 20 | 3c 45 72 72 6f 72 73 2e |include |<Errors.|
|00000280| 68 3e 0d 0d 23 69 6e 63 | 6c 75 64 65 20 22 44 65 |h>..#inc|lude "De|
|00000290| 62 75 67 2e 68 22 0d 0d | 2f 2f 0d 2f 2f 20 57 6f |bug.h"..|//.// Wo|
|000002a0| 72 64 41 6c 69 67 6e 20 | 69 73 20 66 72 6f 6d 20 |rdAlign |is from |
|000002b0| 4d 6f 72 65 54 79 70 65 | 73 2c 20 62 75 74 20 77 |MoreType|s, but w|
|000002c0| 65 20 64 6f 6e 27 74 20 | 77 61 6e 74 20 74 6f 20 |e don't |want to |
|000002d0| 75 73 65 0d 2f 2f 20 4d | 6f 72 65 54 79 70 65 73 |use.// M|oreTypes|
|000002e0| 20 68 65 72 65 2e 20 20 | 54 68 69 73 20 69 73 20 | here. |This is |
|000002f0| 61 20 70 72 65 74 74 79 | 20 73 69 6d 70 6c 65 20 |a pretty| simple |
|00000300| 69 6e 6c 69 6e 65 2c 20 | 73 6f 20 49 27 6d 0d 2f |inline, |so I'm./|
|00000310| 2f 20 6a 75 73 74 20 67 | 6f 69 6e 67 20 74 6f 20 |/ just g|oing to |
|00000320| 64 75 70 6c 69 63 61 74 | 65 20 69 74 2e 0d 2f 2f |duplicat|e it..//|
|00000330| 0d 2f 2f 20 50 72 6f 62 | 6c 65 6d 3a 09 09 50 72 |.// Prob|lem:..Pr|
|00000340| 65 63 6f 6d 70 69 6c 65 | 64 20 68 65 61 64 65 72 |ecompile|d header|
|00000350| 20 66 69 6c 65 20 67 65 | 74 73 20 69 6e 20 74 68 | file ge|ts in th|
|00000360| 65 20 77 61 79 21 0d 2f | 2f 09 09 09 09 53 6f 6c |e way!./|/....Sol|
|00000370| 75 74 69 6f 6e 3a 20 20 | 54 61 6b 65 20 73 69 6d |ution: |Take sim|
|00000380| 70 6c 65 20 73 74 75 66 | 66 20 6f 75 74 20 6f 66 |ple stuf|f out of|
|00000390| 20 4d 6f 72 65 54 79 70 | 65 73 0d 2f 2f 09 09 09 | MoreTyp|es.//...|
|000003a0| 09 61 6e 64 20 69 6e 63 | 6c 75 64 65 20 69 74 20 |.and inc|lude it |
|000003b0| 66 72 6f 6d 20 74 68 69 | 73 20 66 69 6c 65 20 61 |from thi|s file a|
|000003c0| 6e 64 20 4d 6f 72 65 54 | 79 70 65 73 2e 0d 2f 2f |nd MoreT|ypes..//|
|000003d0| 09 09 09 09 49 27 6c 6c | 20 64 6f 20 74 68 61 74 |....I'll| do that|
|000003e0| 20 6c 61 74 65 72 2e 0d | 2f 2f 0d 23 69 66 20 31 | later..|//.#if 1|
|000003f0| 0d 0d 76 6f 69 64 2a 09 | 09 09 09 09 57 6f 72 64 |..void*.|....Word|
|00000400| 41 6c 69 67 6e 28 76 6f | 69 64 2a 29 3b 0d 69 6e |Align(vo|id*);.in|
|00000410| 6c 69 6e 65 20 76 6f 69 | 64 2a 09 09 09 57 6f 72 |line voi|d*...Wor|
|00000420| 64 41 6c 69 67 6e 28 76 | 6f 69 64 2a 20 70 29 09 |dAlign(v|oid* p).|
|00000430| 7b 20 72 65 74 75 72 6e | 20 28 76 6f 69 64 2a 29 |{ return| (void*)|
|00000440| 20 28 28 28 6c 6f 6e 67 | 29 70 2b 31 29 20 26 20 | (((long|)p+1) & |
|00000450| 28 7e 31 29 29 3b 09 7d | 0d 0d 23 65 6e 64 69 66 |(~1));.}|..#endif|
|00000460| 0d 0d 2f 2f 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |..//====|========|
|00000470| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000480| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000490| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000004a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000004b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 0d 2f 2f 20 |========|====.// |
|000004c0| 43 4c 41 53 53 20 54 4f | 62 6a 65 63 74 43 61 63 |CLASS TO|bjectCac|
|000004d0| 68 65 0d 2f 2f 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |he.//===|========|
|000004e0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000004f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000500| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000510| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000520| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 0d 0d 2f |========|=====../|
|00000530| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00000540| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000550| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000560| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000570| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000580| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 54 4f 62 |--------|-.// TOb|
|00000590| 6a 65 63 74 43 61 63 68 | 65 3a 3a 7e 54 4f 62 6a |jectCach|e::~TObj|
|000005a0| 65 63 74 43 61 63 68 65 | 3a 20 0d 2f 2f 0d 2f 2f |ectCache|: .//.//|
|000005b0| 20 54 68 69 73 20 64 65 | 73 74 72 75 63 74 6f 72 | This de|structor|
|000005c0| 20 67 65 74 73 20 63 61 | 6c 6c 65 64 20 77 68 65 | gets ca|lled whe|
|000005d0| 6e 65 76 65 72 20 61 20 | 42 6c 6f 63 6b 43 61 63 |never a |BlockCac|
|000005e0| 68 65 20 6f 72 20 50 72 | 6f 70 65 72 74 79 43 61 |he or Pr|opertyCa|
|000005f0| 63 68 65 20 6e 65 65 64 | 73 20 74 6f 20 62 65 0d |che need|s to be.|
|00000600| 2f 2f 20 64 65 73 74 72 | 6f 79 65 64 2e 0d 2f 2f |// destr|oyed..//|
|00000610| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000620| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000630| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000640| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000650| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000660| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 54 4f 62 6a 65 63 74 |--------|.TObject|
|00000670| 43 61 63 68 65 3a 3a 7e | 54 4f 62 6a 65 63 74 43 |Cache::~|TObjectC|
|00000680| 61 63 68 65 28 29 09 09 | 09 09 09 09 09 09 09 09 |ache()..|........|
|00000690| 09 09 09 09 09 09 09 09 | 0d 09 7b 0d 09 54 4f 62 |........|..{..TOb|
|000006a0| 6a 65 63 74 43 61 63 68 | 65 48 65 61 64 65 72 2a |jectCach|eHeader*|
|000006b0| 20 73 6f 75 72 63 65 42 | 6c 6f 63 6b 20 3d 20 28 | sourceB|lock = (|
|000006c0| 54 4f 62 6a 65 63 74 43 | 61 63 68 65 48 65 61 64 |TObjectC|acheHead|
|000006d0| 65 72 2a 29 20 66 43 61 | 63 68 65 44 61 74 61 3b |er*) fCa|cheData;|
|000006e0| 0d 0d 09 69 66 20 28 73 | 6f 75 72 63 65 42 6c 6f |...if (s|ourceBlo|
|000006f0| 63 6b 29 0d 09 09 7b 0d | 09 09 52 45 51 55 49 52 |ck)...{.|..REQUIR|
|00000700| 45 56 41 4c 49 44 50 4f | 49 4e 54 45 52 28 73 6f |EVALIDPO|INTER(so|
|00000710| 75 72 63 65 42 6c 6f 63 | 6b 29 3b 09 09 09 09 09 |urceBloc|k);.....|
|00000720| 2f 2f 20 63 68 65 63 6b | 20 66 6f 72 20 6f 64 64 |// check| for odd|
|00000730| 69 74 79 2c 20 61 6e 64 | 20 30 78 64 65 61 64 62 |ity, and| 0xdeadb|
|00000740| 65 65 66 27 6e 65 73 73 | 0d 0d 09 09 2f 2f 0d 09 |eef'ness|....//..|
|00000750| 09 2f 2f 20 57 65 20 75 | 73 65 64 20 6f 70 65 72 |.// We u|sed oper|
|00000760| 61 74 6f 72 20 6e 65 77 | 20 5b 5d 20 74 6f 20 61 |ator new| [] to a|
|00000770| 6c 6c 6f 63 61 74 65 2c | 20 73 6f 20 77 65 27 64 |llocate,| so we'd|
|00000780| 20 62 65 74 74 65 72 0d | 09 09 2f 2f 20 75 73 65 | better.|..// use|
|00000790| 72 20 6f 70 65 72 61 74 | 6f 72 20 64 65 6c 65 74 |r operat|or delet|
|000007a0| 65 20 5b 5d 20 74 6f 20 | 64 65 61 6c 6c 6f 63 61 |e [] to |dealloca|
|000007b0| 74 65 2e 20 20 49 6e 20 | 64 65 62 75 67 20 62 75 |te. In |debug bu|
|000007c0| 69 6c 64 73 2c 0d 09 09 | 2f 2f 20 67 6c 6f 62 61 |ilds,...|// globa|
|000007d0| 6c 20 6f 70 65 72 61 74 | 6f 72 20 64 65 6c 65 74 |l operat|or delet|
|000007e0| 65 20 77 69 6c 6c 20 66 | 69 6c 6c 20 74 68 65 20 |e will f|ill the |
|000007f0| 62 6c 6f 63 6b 20 77 69 | 74 68 20 30 78 44 45 41 |block wi|th 0xDEA|
|00000800| 44 42 45 45 46 2e 0d 09 | 09 2f 2f 20 4f 6e 20 6e |DBEEF...|.// On n|
|00000810| 6f 64 65 62 75 67 20 62 | 75 69 6c 64 73 2c 20 74 |odebug b|uilds, t|
|00000820| 68 65 20 62 6c 6f 63 6b | 20 69 73 20 66 69 6c 6c |he block| is fill|
|00000830| 65 64 20 77 69 74 68 20 | 30 20 6f 6e 20 56 30 20 |ed with |0 on V0 |
|00000840| 28 62 65 64 72 6f 63 6b | 0d 09 09 2f 2f 20 6d 65 |(bedrock|...// me|
|00000850| 6d 6f 72 79 20 6d 61 6e | 61 67 65 72 20 62 65 68 |mory man|ager beh|
|00000860| 61 76 69 6f 72 29 20 61 | 6e 64 20 6c 65 66 74 20 |avior) a|nd left |
|00000870| 75 6e 63 68 61 6e 67 65 | 64 20 6f 6e 20 56 31 2e |unchange|d on V1.|
|00000880| 0d 09 09 2f 2f 0d 09 09 | 64 65 6c 65 74 65 20 5b |...//...|delete [|
|00000890| 5d 20 73 6f 75 72 63 65 | 42 6c 6f 63 6b 3b 0d 09 |] source|Block;..|
|000008a0| 09 7d 0d 09 7d 0d 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |.}..}../|/-------|
|000008b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000900| 2d 0d 2f 2f 20 54 4f 62 | 6a 65 63 74 43 61 63 68 |-.// TOb|jectCach|
|00000910| 65 3a 3a 41 6c 6c 6f 63 | 61 74 65 3a 20 0d 2f 2f |e::Alloc|ate: .//|
|00000920| 0d 2f 2f 20 52 65 74 75 | 72 6e 73 20 61 20 70 6f |.// Retu|rns a po|
|00000930| 69 6e 74 65 72 20 74 6f | 20 74 68 65 20 63 61 63 |inter to| the cac|
|00000940| 68 65 20 64 61 74 61 2e | 20 20 49 66 20 69 74 20 |he data.| If it |
|00000950| 63 68 61 6e 67 65 64 2c | 20 74 68 65 6e 20 74 68 |changed,| then th|
|00000960| 65 20 63 61 63 68 65 20 | 64 61 74 61 20 68 61 73 |e cache |data has|
|00000970| 0d 2f 2f 20 62 65 65 6e | 20 6d 6f 76 65 64 21 0d |.// been| moved!.|
|00000980| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00000990| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000009a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000009b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000009c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000009d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 50 74 72 09 54 |--------|--.Ptr.T|
|000009e0| 4f 62 6a 65 63 74 43 61 | 63 68 65 3a 3a 41 6c 6c |ObjectCa|che::All|
|000009f0| 6f 63 61 74 65 28 55 49 | 6e 74 33 32 20 63 61 63 |ocate(UI|nt32 cac|
|00000a00| 68 65 53 69 7a 65 29 0d | 09 7b 0d 0d 09 2f 2f 0d |heSize).|.{...//.|
|00000a10| 09 2f 2f 20 57 65 20 73 | 68 6f 75 6c 64 20 6e 65 |.// We s|hould ne|
|00000a20| 76 65 72 20 62 65 20 63 | 61 6c 6c 65 64 20 74 6f |ver be c|alled to|
|00000a30| 20 61 6c 6c 6f 63 61 74 | 65 20 7a 65 72 6f 20 62 | allocat|e zero b|
|00000a40| 79 74 65 73 2e 0d 09 2f | 2f 0d 09 2f 2f 20 54 68 |ytes.../|/..// Th|
|00000a50| 65 20 61 6c 6c 6f 63 61 | 74 65 64 20 73 69 7a 65 |e alloca|ted size|
|00000a60| 20 73 68 6f 75 6c 64 20 | 61 6c 77 61 79 73 20 61 | should |always a|
|00000a70| 74 20 6c 65 61 73 74 20 | 69 6e 63 6c 75 64 65 20 |t least |include |
|00000a80| 74 68 65 20 50 72 6f 70 | 65 72 74 79 43 61 63 68 |the Prop|ertyCach|
|00000a90| 65 20 6f 72 20 42 6c 6f | 63 6b 43 61 63 68 65 0d |e or Blo|ckCache.|
|00000aa0| 09 2f 2f 20 68 65 61 64 | 65 72 20 73 69 7a 65 2e |.// head|er size.|
|00000ab0| 0d 09 2f 2f 0d 09 41 53 | 53 45 52 54 50 52 49 4e |..//..AS|SERTPRIN|
|00000ac0| 54 28 28 63 61 63 68 65 | 53 69 7a 65 20 21 3d 20 |T((cache|Size != |
|00000ad0| 30 29 2c 20 28 22 54 68 | 65 20 6f 62 6a 65 63 74 |0), ("Th|e object|
|00000ae0| 20 63 61 63 68 65 20 6d | 75 73 74 20 62 65 20 6d | cache m|ust be m|
|00000af0| 6f 72 65 20 74 68 61 6e | 20 7a 65 72 6f 20 62 79 |ore than| zero by|
|00000b00| 74 65 73 21 22 29 29 3b | 0d 0d 09 2f 2f 0d 09 2f |tes!"));|...//../|
|00000b10| 2f 20 46 69 72 73 74 2c | 20 73 65 65 20 69 66 20 |/ First,| see if |
|00000b20| 77 65 20 68 61 76 65 20 | 65 6e 6f 75 67 68 20 70 |we have |enough p|
|00000b30| 68 79 73 69 63 61 6c 20 | 6d 65 6d 6f 72 79 20 69 |hysical |memory i|
|00000b40| 6e 20 74 68 69 73 20 62 | 6c 6f 63 6b 20 74 6f 20 |n this b|lock to |
|00000b50| 73 61 74 69 73 66 79 20 | 74 68 69 73 0d 09 2f 2f |satisfy |this..//|
|00000b60| 20 72 65 71 75 65 73 74 | 2e 20 20 41 63 74 75 61 | request|. Actua|
|00000b70| 6c 6c 79 2c 20 73 65 65 | 20 69 66 20 77 65 20 68 |lly, see| if we h|
|00000b80| 61 76 65 20 2d 61 6e 79 | 2d 20 70 68 79 73 69 63 |ave -any|- physic|
|00000b90| 61 6c 20 6d 65 6d 6f 72 | 79 20 61 74 20 61 6c 6c |al memor|y at all|
|00000ba0| 20 61 74 20 74 68 69 73 | 0d 09 2f 2f 20 70 6f 69 | at this|..// poi|
|00000bb0| 6e 74 2e 0d 09 2f 2f 0d | 09 54 4f 62 6a 65 63 74 |nt...//.|.TObject|
|00000bc0| 43 61 63 68 65 48 65 61 | 64 65 72 2a 20 73 6f 75 |CacheHea|der* sou|
|00000bd0| 72 63 65 42 6c 6f 63 6b | 20 3d 20 28 54 4f 62 6a |rceBlock| = (TObj|
|00000be0| 65 63 74 43 61 63 68 65 | 48 65 61 64 65 72 2a 29 |ectCache|Header*)|
|00000bf0| 20 66 43 61 63 68 65 44 | 61 74 61 3b 0d 0d 09 69 | fCacheD|ata;...i|
|00000c00| 66 20 28 73 6f 75 72 63 | 65 42 6c 6f 63 6b 29 0d |f (sourc|eBlock).|
|00000c10| 09 09 7b 0d 09 09 69 66 | 20 28 73 6f 75 72 63 65 |..{...if| (source|
|00000c20| 42 6c 6f 63 6b 2d 3e 66 | 50 68 79 73 69 63 61 6c |Block->f|Physical|
|00000c30| 53 69 7a 65 20 3e 3d 20 | 63 61 63 68 65 53 69 7a |Size >= |cacheSiz|
|00000c40| 65 29 0d 09 09 09 7b 0d | 09 09 09 73 6f 75 72 63 |e)....{.|...sourc|
|00000c50| 65 42 6c 6f 63 6b 2d 3e | 66 55 73 65 64 20 3d 20 |eBlock->|fUsed = |
|00000c60| 63 61 63 68 65 53 69 7a | 65 3b 0d 09 09 09 72 65 |cacheSiz|e;....re|
|00000c70| 74 75 72 6e 20 28 50 74 | 72 29 20 73 6f 75 72 63 |turn (Pt|r) sourc|
|00000c80| 65 42 6c 6f 63 6b 3b 0d | 09 09 09 7d 09 09 0d 09 |eBlock;.|...}....|
|00000c90| 09 7d 0d 0d 09 2f 2f 0d | 09 2f 2f 20 54 68 65 20 |.}...//.|.// The |
|00000ca0| 63 61 63 68 65 20 67 72 | 6f 77 20 73 69 7a 65 20 |cache gr|ow size |
|00000cb0| 69 73 20 63 75 72 72 65 | 6e 74 6c 79 20 61 20 6d |is curre|ntly a m|
|00000cc0| 75 6c 74 69 70 6c 65 20 | 6f 66 20 33 32 20 0d 09 |ultiple |of 32 ..|
|00000cd0| 2f 2f 20 28 69 65 2c 20 | 69 74 20 72 6f 75 6e 64 |// (ie, |it round|
|00000ce0| 73 20 75 70 20 74 6f 20 | 74 68 65 20 6e 65 61 72 |s up to |the near|
|00000cf0| 65 73 74 20 6d 75 6c 74 | 69 70 6c 65 20 6f 66 20 |est mult|iple of |
|00000d00| 33 32 29 0d 09 2f 2f 0d | 09 55 49 6e 74 33 32 20 |32)..//.|.UInt32 |
|00000d10| 6e 65 77 50 68 79 73 69 | 63 61 6c 53 69 7a 65 20 |newPhysi|calSize |
|00000d20| 3d 20 28 63 61 63 68 65 | 53 69 7a 65 20 2b 20 6b |= (cache|Size + k|
|00000d30| 43 61 63 68 65 47 72 6f | 77 53 69 7a 65 29 20 26 |CacheGro|wSize) &|
|00000d40| 20 28 7e 6b 43 61 63 68 | 65 47 72 6f 77 53 69 7a | (~kCach|eGrowSiz|
|00000d50| 65 29 3b 0d 0d 09 2f 2f | 0d 09 2f 2f 20 54 72 79 |e);...//|..// Try|
|00000d60| 20 61 6c 6c 6f 63 61 74 | 69 6e 67 20 6f 75 72 20 | allocat|ing our |
|00000d70| 6e 65 77 20 62 6c 6f 63 | 6b 3b 20 75 73 65 20 6f |new bloc|k; use o|
|00000d80| 70 65 72 61 74 6f 72 20 | 6e 65 77 20 5b 5d 2c 20 |perator |new [], |
|00000d90| 77 68 69 63 68 20 63 61 | 6c 6c 73 20 74 68 65 0d |which ca|lls the.|
|00000da0| 09 2f 2f 20 67 6c 6f 62 | 61 6c 20 6f 70 65 72 61 |.// glob|al opera|
|00000db0| 74 6f 72 20 6e 65 77 2c | 20 77 68 69 63 68 20 68 |tor new,| which h|
|00000dc0| 6f 70 65 66 75 6c 6c 79 | 20 73 6f 6d 65 6f 6e 65 |opefully| someone|
|00000dd0| 20 68 61 73 20 77 72 69 | 74 74 65 6e 20 74 6f 20 | has wri|tten to |
|00000de0| 75 73 65 20 74 68 65 0d | 09 2f 2f 20 63 6f 72 72 |use the.|.// corr|
|00000df0| 65 63 74 20 6d 65 6d 6f | 72 79 20 61 6c 6c 6f 63 |ect memo|ry alloc|
|00000e00| 61 74 69 6f 6e 20 73 74 | 72 61 74 65 67 79 0d 09 |ation st|rategy..|
|00000e10| 2f 2f 0d 09 76 6f 69 64 | 2a 20 6f 75 72 42 6c 6f |//..void|* ourBlo|
|00000e20| 63 6b 20 3d 20 28 76 6f | 69 64 2a 29 20 6e 65 77 |ck = (vo|id*) new|
|00000e30| 20 63 68 61 72 5b 6e 65 | 77 50 68 79 73 69 63 61 | char[ne|wPhysica|
|00000e40| 6c 53 69 7a 65 5d 3b 09 | 09 09 09 09 09 09 09 09 |lSize];.|........|
|00000e50| 09 09 09 09 09 09 0d 0d | 09 2f 2f 0d 09 2f 2f 20 |........|.//..// |
|00000e60| 49 66 20 77 68 69 63 68 | 65 76 65 72 20 6d 65 6d |If which|ever mem|
|00000e70| 6f 72 79 20 6d 61 6e 61 | 67 65 72 20 77 65 20 61 |ory mana|ger we a|
|00000e80| 72 65 20 75 73 69 6e 67 | 20 72 65 74 75 72 6e 65 |re using| returne|
|00000e90| 64 20 6e 69 6c 20 66 6f | 72 20 74 68 65 20 72 65 |d nil fo|r the re|
|00000ea0| 73 75 6c 74 20 6f 66 20 | 74 68 65 20 62 6c 6f 63 |sult of |the bloc|
|00000eb0| 6b 0d 09 2f 2f 20 20 61 | 6c 6c 6f 63 61 74 69 6f |k..// a|llocatio|
|00000ec0| 6e 2c 20 74 68 61 74 27 | 73 20 72 65 61 6c 20 62 |n, that'|s real b|
|00000ed0| 61 64 2e 20 20 46 61 69 | 6c 20 61 6e 64 20 73 61 |ad. Fai|l and sa|
|00000ee0| 79 20 77 65 27 76 65 20 | 72 75 6e 20 6f 75 74 20 |y we've |run out |
|00000ef0| 6f 66 20 6d 65 6d 6f 72 | 79 2e 20 20 48 6f 70 65 |of memor|y. Hope|
|00000f00| 20 73 6f 6d 65 6f 6e 65 | 0d 09 2f 2f 20 20 63 61 | someone|..// ca|
|00000f10| 74 63 68 65 73 20 74 68 | 69 73 20 66 61 69 6c 75 |tches th|is failu|
|00000f20| 72 65 21 0d 09 2f 2f 0d | 09 69 66 20 28 6f 75 72 |re!..//.|.if (our|
|00000f30| 42 6c 6f 63 6b 20 3d 3d | 20 6e 69 6c 29 0d 09 09 |Block ==| nil)...|
|00000f40| 46 61 69 6c 45 72 72 28 | 6d 65 6d 46 75 6c 6c 45 |FailErr(|memFullE|
|00000f50| 72 72 29 3b 0d 0d 09 54 | 4f 62 6a 65 63 74 43 61 |rr);...T|ObjectCa|
|00000f60| 63 68 65 48 65 61 64 65 | 72 2a 20 6e 65 77 43 61 |cheHeade|r* newCa|
|00000f70| 63 68 65 44 61 74 61 20 | 09 3d 20 28 54 4f 62 6a |cheData |.= (TObj|
|00000f80| 65 63 74 43 61 63 68 65 | 48 65 61 64 65 72 2a 29 |ectCache|Header*)|
|00000f90| 20 6f 75 72 42 6c 6f 63 | 6b 3b 0d 09 0d 09 2f 2f | ourBloc|k;....//|
|00000fa0| 0d 09 2f 2f 20 49 66 20 | 61 20 62 6c 6f 63 6b 20 |..// If |a block |
|00000fb0| 61 6c 72 65 61 64 79 20 | 65 78 69 73 74 73 2c 20 |already |exists, |
|00000fc0| 74 72 79 20 6d 6f 76 69 | 6e 67 20 74 68 65 20 22 |try movi|ng the "|
|00000fd0| 55 73 65 64 22 20 61 6d | 6f 75 6e 74 20 6f 66 20 |Used" am|ount of |
|00000fe0| 62 79 74 65 73 20 66 72 | 6f 6d 20 74 68 65 20 6f |bytes fr|om the o|
|00000ff0| 6c 64 20 6f 62 6a 65 63 | 74 0d 09 2f 2f 20 69 6e |ld objec|t..// in|
|00001000| 74 6f 20 74 68 65 20 6e | 65 77 20 6f 62 6a 65 63 |to the n|ew objec|
|00001010| 74 2e 0d 09 2f 2f 0d 09 | 2f 2f 20 22 55 73 65 64 |t...//..|// "Used|
|00001020| 22 20 69 73 20 64 65 66 | 69 6e 65 64 20 74 6f 20 |" is def|ined to |
|00001030| 62 65 20 74 68 65 20 73 | 69 7a 65 20 6f 66 20 74 |be the s|ize of t|
|00001040| 68 65 20 42 6c 6f 63 6b | 20 6f 72 20 50 72 6f 70 |he Block| or Prop|
|00001050| 65 72 74 79 20 63 61 63 | 68 65 20 68 65 61 64 65 |erty cac|he heade|
|00001060| 72 20 70 6c 75 73 20 74 | 68 65 0d 09 2f 2f 20 61 |r plus t|he..// a|
|00001070| 63 74 75 61 6c 20 62 79 | 74 65 73 20 75 73 65 64 |ctual by|tes used|
|00001080| 2e 20 0d 09 2f 2f 0d 09 | 69 66 20 28 73 6f 75 72 |. ..//..|if (sour|
|00001090| 63 65 42 6c 6f 63 6b 29 | 0d 09 09 7b 0d 09 09 55 |ceBlock)|...{...U|
|000010a0| 49 6e 74 33 32 20 6d 6f | 76 65 48 6f 77 4d 75 63 |Int32 mo|veHowMuc|
|000010b0| 68 20 3d 20 30 3b 0d 09 | 09 0d 09 09 2f 2f 0d 09 |h = 0;..|....//..|
|000010c0| 09 2f 2f 20 49 66 20 77 | 65 20 77 65 72 65 20 6a |.// If w|e were j|
|000010d0| 75 73 74 20 61 73 6b 65 | 64 20 74 6f 20 72 61 74 |ust aske|d to rat|
|000010e0| 63 68 65 74 20 64 6f 77 | 6e 20 74 68 65 20 61 6d |chet dow|n the am|
|000010f0| 6f 75 6e 74 20 6f 66 20 | 73 70 61 63 65 20 77 65 |ount of |space we|
|00001100| 27 72 65 20 75 73 69 6e | 67 2c 0d 09 09 2f 2f 20 |'re usin|g,...// |
|00001110| 6d 61 6b 65 20 73 75 72 | 65 20 74 68 61 74 20 77 |make sur|e that w|
|00001120| 65 20 6f 6e 6c 79 20 63 | 6f 70 79 20 74 68 65 20 |e only c|opy the |
|00001130| 73 6d 61 6c 6c 65 72 20 | 6e 75 6d 62 65 72 20 6f |smaller |number o|
|00001140| 66 20 62 79 74 65 73 20 | 61 6e 64 20 64 6f 6e 27 |f bytes |and don'|
|00001150| 74 20 6f 76 65 72 77 72 | 69 74 65 0d 09 09 2f 2f |t overwr|ite...//|
|00001160| 20 61 6e 79 74 68 69 6e | 67 20 62 65 79 6f 6e 64 | anythin|g beyond|
|00001170| 20 74 68 65 20 65 6e 64 | 20 6f 66 20 6f 75 72 20 | the end| of our |
|00001180| 62 6c 6f 63 6b 20 28 67 | 61 6b 29 2e 0d 09 09 2f |block (g|ak)..../|
|00001190| 2f 0d 09 09 69 66 20 28 | 73 6f 75 72 63 65 42 6c |/...if (|sourceBl|
|000011a0| 6f 63 6b 2d 3e 66 55 73 | 65 64 20 3c 3d 20 63 61 |ock->fUs|ed <= ca|
|000011b0| 63 68 65 53 69 7a 65 29 | 0d 09 09 09 6d 6f 76 65 |cheSize)|....move|
|000011c0| 48 6f 77 4d 75 63 68 20 | 3d 20 73 6f 75 72 63 65 |HowMuch |= source|
|000011d0| 42 6c 6f 63 6b 2d 3e 66 | 55 73 65 64 3b 0d 09 09 |Block->f|Used;...|
|000011e0| 65 6c 73 65 0d 09 09 09 | 6d 6f 76 65 48 6f 77 4d |else....|moveHowM|
|000011f0| 75 63 68 20 3d 20 63 61 | 63 68 65 53 69 7a 65 3b |uch = ca|cheSize;|
|00001200| 0d 0d 09 09 42 6c 6f 63 | 6b 4d 6f 76 65 44 61 74 |....Bloc|kMoveDat|
|00001210| 61 28 73 6f 75 72 63 65 | 42 6c 6f 63 6b 2c 20 6e |a(source|Block, n|
|00001220| 65 77 43 61 63 68 65 44 | 61 74 61 2c 20 6d 6f 76 |ewCacheD|ata, mov|
|00001230| 65 48 6f 77 4d 75 63 68 | 29 3b 0d 09 09 0d 09 09 |eHowMuch|);......|
|00001240| 2f 2f 0d 09 09 2f 2f 20 | 46 72 65 65 20 74 68 65 |//...// |Free the|
|00001250| 20 73 6f 75 72 63 65 20 | 62 6c 6f 63 6b 0d 09 09 | source |block...|
|00001260| 2f 2f 0d 09 09 64 65 6c | 65 74 65 20 5b 5d 20 73 |//...del|ete [] s|
|00001270| 6f 75 72 63 65 42 6c 6f | 63 6b 3b 0d 09 09 7d 0d |ourceBlo|ck;...}.|
|00001280| 09 0d 09 2f 2f 0d 09 2f | 2f 20 55 70 64 61 74 65 |...//../|/ Update|
|00001290| 20 74 68 65 20 70 68 79 | 73 69 63 61 6c 20 73 69 | the phy|sical si|
|000012a0| 7a 65 20 61 6e 64 20 75 | 73 65 64 20 73 69 7a 65 |ze and u|sed size|
|000012b0| 73 20 6f 66 20 74 68 65 | 20 62 6c 6f 63 6b 20 77 |s of the| block w|
|000012c0| 65 20 6a 75 73 74 20 63 | 72 65 61 74 65 64 0d 09 |e just c|reated..|
|000012d0| 2f 2f 0d 23 69 66 64 65 | 66 20 44 45 42 55 47 0d |//.#ifde|f DEBUG.|
|000012e0| 09 6e 65 77 43 61 63 68 | 65 44 61 74 61 2d 3e 66 |.newCach|eData->f|
|000012f0| 46 69 72 73 74 43 6f 6f | 6b 69 65 20 09 3d 20 27 |FirstCoo|kie .= '|
|00001300| 61 6e 64 79 27 3b 0d 23 | 65 6e 64 69 66 0d 09 6e |andy';.#|endif..n|
|00001310| 65 77 43 61 63 68 65 44 | 61 74 61 2d 3e 66 50 68 |ewCacheD|ata->fPh|
|00001320| 79 73 69 63 61 6c 53 69 | 7a 65 20 3d 20 6e 65 77 |ysicalSi|ze = new|
|00001330| 50 68 79 73 69 63 61 6c | 53 69 7a 65 3b 0d 09 6e |Physical|Size;..n|
|00001340| 65 77 43 61 63 68 65 44 | 61 74 61 2d 3e 66 55 73 |ewCacheD|ata->fUs|
|00001350| 65 64 20 09 09 3d 20 63 | 61 63 68 65 53 69 7a 65 |ed ..= c|acheSize|
|00001360| 3b 0d 0d 09 2f 2f 0d 09 | 2f 2f 20 55 70 64 61 74 |;...//..|// Updat|
|00001370| 65 20 74 68 65 20 63 61 | 63 68 65 20 70 6f 69 6e |e the ca|che poin|
|00001380| 74 65 72 20 77 68 69 63 | 68 20 69 73 20 28 6d 6f |ter whic|h is (mo|
|00001390| 73 74 20 6c 69 6b 65 6c | 79 29 20 69 6e 73 69 64 |st likel|y) insid|
|000013a0| 65 20 61 20 54 4c 69 73 | 74 2c 20 54 43 6f 6d 6d |e a TLis|t, TComm|
|000013b0| 61 6e 64 2c 20 6f 72 20 | 3f 3f 3f 3f 20 6f 62 6a |and, or |???? obj|
|000013c0| 65 63 74 0d 09 2f 2f 09 | 0d 09 66 43 61 63 68 65 |ect..//.|..fCache|
|000013d0| 44 61 74 61 20 3d 20 6e | 65 77 43 61 63 68 65 44 |Data = n|ewCacheD|
|000013e0| 61 74 61 3b 0d 09 0d 09 | 72 65 74 75 72 6e 20 28 |ata;....|return (|
|000013f0| 50 74 72 29 20 6e 65 77 | 43 61 63 68 65 44 61 74 |Ptr) new|CacheDat|
|00001400| 61 3b 0d 09 7d 20 2f 2f | 20 54 4f 62 6a 65 63 74 |a;..} //| TObject|
|00001410| 43 61 63 68 65 3a 3a 41 | 6c 6c 6f 63 61 74 65 20 |Cache::A|llocate |
|00001420| 0d 0d 2f 2f 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |..//====|========|
|00001430| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001440| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001450| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001460| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001470| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 0d 2f 2f 20 |========|====.// |
|00001480| 43 4c 41 53 53 20 54 4f | 62 6a 65 63 74 42 6c 6f |CLASS TO|bjectBlo|
|00001490| 63 6b 43 61 63 68 65 0d | 2f 2f 3d 3d 3d 3d 3d 3d |ckCache.|//======|
|000014a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000014b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000014c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000014d0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000014e0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000014f0| 3d 3d 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |==..//--|--------|
|00001500| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001510| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001520| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001530| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001540| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 2f |--------|------./|
|00001550| 2f 20 54 4f 62 6a 65 63 | 74 42 6c 6f 63 6b 43 61 |/ TObjec|tBlockCa|
|00001560| 63 68 65 3a 3a 43 72 65 | 61 74 65 3a 20 0d 2f 2f |che::Cre|ate: .//|
|00001570| 0d 2f 2f 20 a5 a5 a5 20 | 69 6e 6c 69 6e 65 20 74 |.// ... |inline t|
|00001580| 68 69 73 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |his.//--|--------|
|00001590| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000015a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000015b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000015c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000015d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 76 |--------|------.v|
|000015e0| 6f 69 64 20 54 4f 62 6a | 65 63 74 42 6c 6f 63 6b |oid TObj|ectBlock|
|000015f0| 43 61 63 68 65 3a 3a 43 | 72 65 61 74 65 28 55 49 |Cache::C|reate(UI|
|00001600| 6e 74 33 32 20 63 61 63 | 68 65 53 69 7a 65 29 0d |nt32 cac|heSize).|
|00001610| 09 7b 0d 09 54 4f 62 6a | 65 63 74 42 6c 6f 63 6b |.{..TObj|ectBlock|
|00001620| 43 61 63 68 65 48 65 61 | 64 65 72 2a 20 72 65 73 |CacheHea|der* res|
|00001630| 75 6c 74 20 3d 20 28 54 | 4f 62 6a 65 63 74 42 6c |ult = (T|ObjectBl|
|00001640| 6f 63 6b 43 61 63 68 65 | 48 65 61 64 65 72 2a 29 |ockCache|Header*)|
|00001650| 20 41 6c 6c 6f 63 61 74 | 65 28 63 61 63 68 65 53 | Allocat|e(cacheS|
|00001660| 69 7a 65 20 2b 20 73 69 | 7a 65 6f 66 28 54 4f 62 |ize + si|zeof(TOb|
|00001670| 6a 65 63 74 42 6c 6f 63 | 6b 43 61 63 68 65 48 65 |jectBloc|kCacheHe|
|00001680| 61 64 65 72 29 29 3b 09 | 0d 09 0d 09 72 65 73 75 |ader));.|....resu|
|00001690| 6c 74 2d 3e 66 4c 6f 63 | 6b 43 6f 75 6e 74 20 3d |lt->fLoc|kCount =|
|000016a0| 20 30 78 30 3b 09 09 2f | 2f 20 6e 6f 74 68 69 6e | 0x0;../|/ nothin|
|000016b0| 67 20 6c 6f 63 6b 65 64 | 0d 09 7d 20 2f 2f 20 54 |g locked|..} // T|
|000016c0| 4f 62 6a 65 63 74 42 6c | 6f 63 6b 43 61 63 68 65 |ObjectBl|ockCache|
|000016d0| 3a 3a 43 72 65 61 74 65 | 20 0d 0d 2f 2f 2d 2d 2d |::Create| ..//---|
|000016e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000016f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001730| 2d 2d 2d 2d 2d 0d 2f 2f | 20 54 4f 62 6a 65 63 74 |-----.//| TObject|
|00001740| 42 6c 6f 63 6b 43 61 63 | 68 65 3a 3a 4c 6f 63 6b |BlockCac|he::Lock|
|00001750| 3a 20 0d 2f 2f 0d 2f 2f | 20 a5 a5 a5 20 69 6e 6c |: .//.//| ... inl|
|00001760| 69 6e 65 20 74 68 69 73 | 0d 2f 2f 2d 2d 2d 2d 2d |ine this|.//-----|
|00001770| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001780| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001790| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000017a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000017b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000017c0| 2d 2d 2d 0d 76 6f 69 64 | 20 54 4f 62 6a 65 63 74 |---.void| TObject|
|000017d0| 42 6c 6f 63 6b 43 61 63 | 68 65 3a 3a 4c 6f 63 6b |BlockCac|he::Lock|
|000017e0| 28 29 20 63 6f 6e 73 74 | 0d 09 7b 0d 09 54 4f 62 |() const|..{..TOb|
|000017f0| 6a 65 63 74 42 6c 6f 63 | 6b 43 61 63 68 65 48 65 |jectBloc|kCacheHe|
|00001800| 61 64 65 72 2a 20 62 6c | 6f 63 6b 48 65 61 64 65 |ader* bl|ockHeade|
|00001810| 72 20 3d 20 42 6c 6f 63 | 6b 43 61 63 68 65 44 61 |r = Bloc|kCacheDa|
|00001820| 74 61 50 74 72 28 29 3b | 0d 09 0d 09 69 66 20 28 |taPtr();|....if (|
|00001830| 21 62 6c 6f 63 6b 48 65 | 61 64 65 72 29 0d 09 09 |!blockHe|ader)...|
|00001840| 72 65 74 75 72 6e 3b 0d | 09 0d 09 62 6c 6f 63 6b |return;.|...block|
|00001850| 48 65 61 64 65 72 2d 3e | 66 4c 6f 63 6b 43 6f 75 |Header->|fLockCou|
|00001860| 6e 74 2b 2b 3b 0d 09 7d | 20 2f 2f 20 54 4f 62 6a |nt++;..}| // TObj|
|00001870| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 3a 3a 4c |ectBlock|Cache::L|
|00001880| 6f 63 6b 20 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |ock ..//|--------|
|00001890| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018e0| 0d 2f 2f 20 54 4f 62 6a | 65 63 74 42 6c 6f 63 6b |.// TObj|ectBlock|
|000018f0| 43 61 63 68 65 3a 3a 55 | 6e 6c 6f 63 6b 3a 20 0d |Cache::U|nlock: .|
|00001900| 2f 2f 0d 2f 2f 20 a5 a5 | a5 20 69 6e 6c 69 6e 65 |//.// ..|. inline|
|00001910| 20 74 68 69 73 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d | this.//|--------|
|00001920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001970| 0d 76 6f 69 64 20 54 4f | 62 6a 65 63 74 42 6c 6f |.void TO|bjectBlo|
|00001980| 63 6b 43 61 63 68 65 3a | 3a 55 6e 6c 6f 63 6b 28 |ckCache:|:Unlock(|
|00001990| 29 20 63 6f 6e 73 74 0d | 09 7b 0d 09 54 4f 62 6a |) const.|.{..TObj|
|000019a0| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 48 65 61 |ectBlock|CacheHea|
|000019b0| 64 65 72 2a 20 62 6c 6f | 63 6b 48 65 61 64 65 72 |der* blo|ckHeader|
|000019c0| 20 3d 20 42 6c 6f 63 6b | 43 61 63 68 65 44 61 74 | = Block|CacheDat|
|000019d0| 61 50 74 72 28 29 3b 0d | 09 0d 09 69 66 20 28 21 |aPtr();.|...if (!|
|000019e0| 62 6c 6f 63 6b 48 65 61 | 64 65 72 29 0d 09 09 72 |blockHea|der)...r|
|000019f0| 65 74 75 72 6e 3b 0d 09 | 0d 09 69 66 20 28 62 6c |eturn;..|..if (bl|
|00001a00| 6f 63 6b 48 65 61 64 65 | 72 2d 3e 66 4c 6f 63 6b |ockHeade|r->fLock|
|00001a10| 43 6f 75 6e 74 29 09 09 | 2f 2f 20 70 69 6e 20 6c |Count)..|// pin l|
|00001a20| 6f 63 6b 20 63 6f 75 6e | 74 20 61 74 20 7a 65 72 |ock coun|t at zer|
|00001a30| 6f 0d 09 09 62 6c 6f 63 | 6b 48 65 61 64 65 72 2d |o...bloc|kHeader-|
|00001a40| 3e 66 4c 6f 63 6b 43 6f | 75 6e 74 2d 2d 3b 0d 09 |>fLockCo|unt--;..|
|00001a50| 7d 20 2f 2f 20 54 4f 62 | 6a 65 63 74 42 6c 6f 63 |} // TOb|jectBloc|
|00001a60| 6b 43 61 63 68 65 3a 3a | 55 6e 6c 6f 63 6b 20 0d |kCache::|Unlock .|
|00001a70| 0d 2f 2f 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.//-----|--------|
|00001a80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001a90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001aa0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ab0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ac0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 2f 2f 20 54 |--------|---.// T|
|00001ad0| 4f 62 6a 65 63 74 42 6c | 6f 63 6b 43 61 63 68 65 |ObjectBl|ockCache|
|00001ae0| 3a 3a 4c 6f 63 6b 65 64 | 3a 20 0d 2f 2f 0d 2f 2f |::Locked|: .//.//|
|00001af0| 20 a5 a5 a5 20 69 6e 6c | 69 6e 65 20 74 68 69 73 | ... inl|ine this|
|00001b00| 0d 2f 2f 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.//-----|--------|
|00001b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 42 6f 6f 6c |--------|---.Bool|
|00001b60| 65 61 6e 20 54 4f 62 6a | 65 63 74 42 6c 6f 63 6b |ean TObj|ectBlock|
|00001b70| 43 61 63 68 65 3a 3a 4c | 6f 63 6b 65 64 28 29 20 |Cache::L|ocked() |
|00001b80| 63 6f 6e 73 74 0d 09 7b | 0d 09 54 4f 62 6a 65 63 |const..{|..TObjec|
|00001b90| 74 42 6c 6f 63 6b 43 61 | 63 68 65 48 65 61 64 65 |tBlockCa|cheHeade|
|00001ba0| 72 2a 20 62 6c 6f 63 6b | 48 65 61 64 65 72 20 3d |r* block|Header =|
|00001bb0| 20 42 6c 6f 63 6b 43 61 | 63 68 65 44 61 74 61 50 | BlockCa|cheDataP|
|00001bc0| 74 72 28 29 3b 0d 09 0d | 09 69 66 20 28 62 6c 6f |tr();...|.if (blo|
|00001bd0| 63 6b 48 65 61 64 65 72 | 20 26 26 20 62 6c 6f 63 |ckHeader| && bloc|
|00001be0| 6b 48 65 61 64 65 72 2d | 3e 66 4c 6f 63 6b 43 6f |kHeader-|>fLockCo|
|00001bf0| 75 6e 74 29 0d 09 09 72 | 65 74 75 72 6e 20 74 72 |unt)...r|eturn tr|
|00001c00| 75 65 3b 0d 09 0d 09 72 | 65 74 75 72 6e 20 66 61 |ue;....r|eturn fa|
|00001c10| 6c 73 65 3b 09 0d 09 7d | 20 2f 2f 20 54 4f 62 6a |lse;...}| // TObj|
|00001c20| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 3a 3a 4c |ectBlock|Cache::L|
|00001c30| 6f 63 6b 65 64 20 0d 0d | 2f 2f 2d 2d 2d 2d 2d 2d |ocked ..|//------|
|00001c40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001c90| 2d 2d 0d 2f 2f 20 54 4f | 62 6a 65 63 74 42 6c 6f |--.// TO|bjectBlo|
|00001ca0| 63 6b 43 61 63 68 65 3a | 3a 4c 6f 63 6b 43 6f 75 |ckCache:|:LockCou|
|00001cb0| 6e 74 3a 20 0d 2f 2f 0d | 2f 2f 20 a5 a5 a5 20 69 |nt: .//.|// ... i|
|00001cc0| 6e 6c 69 6e 65 20 74 68 | 69 73 0d 2f 2f 2d 2d 2d |nline th|is.//---|
|00001cd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ce0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001cf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001d00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001d10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001d20| 2d 2d 2d 2d 2d 0d 55 49 | 6e 74 31 36 20 54 4f 62 |-----.UI|nt16 TOb|
|00001d30| 6a 65 63 74 42 6c 6f 63 | 6b 43 61 63 68 65 3a 3a |jectBloc|kCache::|
|00001d40| 4c 6f 63 6b 43 6f 75 6e | 74 28 29 20 63 6f 6e 73 |LockCoun|t() cons|
|00001d50| 74 0d 09 7b 0d 09 54 4f | 62 6a 65 63 74 42 6c 6f |t..{..TO|bjectBlo|
|00001d60| 63 6b 43 61 63 68 65 48 | 65 61 64 65 72 2a 20 62 |ckCacheH|eader* b|
|00001d70| 6c 6f 63 6b 48 65 61 64 | 65 72 20 3d 20 42 6c 6f |lockHead|er = Blo|
|00001d80| 63 6b 43 61 63 68 65 44 | 61 74 61 50 74 72 28 29 |ckCacheD|ataPtr()|
|00001d90| 3b 0d 09 0d 09 69 66 20 | 28 21 62 6c 6f 63 6b 48 |;....if |(!blockH|
|00001da0| 65 61 64 65 72 29 0d 09 | 09 72 65 74 75 72 6e 20 |eader)..|.return |
|00001db0| 30 3b 0d 0d 09 72 65 74 | 75 72 6e 20 62 6c 6f 63 |0;...ret|urn bloc|
|00001dc0| 6b 48 65 61 64 65 72 2d | 3e 66 4c 6f 63 6b 43 6f |kHeader-|>fLockCo|
|00001dd0| 75 6e 74 3b 0d 09 7d 20 | 2f 2f 20 54 4f 62 6a 65 |unt;..} |// TObje|
|00001de0| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 3a 3a 4c 6f |ctBlockC|ache::Lo|
|00001df0| 63 6b 43 6f 75 6e 74 20 | 0d 0d 2f 2f 2d 2d 2d 2d |ckCount |..//----|
|00001e00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001e50| 2d 2d 2d 2d 0d 2f 2f 20 | 54 4f 62 6a 65 63 74 42 |----.// |TObjectB|
|00001e60| 6c 6f 63 6b 43 61 63 68 | 65 3a 3a 53 65 74 4c 6f |lockCach|e::SetLo|
|00001e70| 63 6b 43 6f 75 6e 74 3a | 20 0d 2f 2f 0d 2f 2f 20 |ckCount:| .//.// |
|00001e80| a5 a5 a5 20 69 6e 6c 69 | 6e 65 20 74 68 69 73 0d |... inli|ne this.|
|00001e90| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00001ea0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001eb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ec0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ed0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ee0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 76 6f 69 64 20 |--------|--.void |
|00001ef0| 54 4f 62 6a 65 63 74 42 | 6c 6f 63 6b 43 61 63 68 |TObjectB|lockCach|
|00001f00| 65 3a 3a 53 65 74 4c 6f | 63 6b 43 6f 75 6e 74 28 |e::SetLo|ckCount(|
|00001f10| 55 49 6e 74 31 36 20 63 | 6f 75 6e 74 29 20 63 6f |UInt16 c|ount) co|
|00001f20| 6e 73 74 0d 09 7b 0d 09 | 54 4f 62 6a 65 63 74 42 |nst..{..|TObjectB|
|00001f30| 6c 6f 63 6b 43 61 63 68 | 65 48 65 61 64 65 72 2a |lockCach|eHeader*|
|00001f40| 20 62 6c 6f 63 6b 48 65 | 61 64 65 72 20 3d 20 42 | blockHe|ader = B|
|00001f50| 6c 6f 63 6b 43 61 63 68 | 65 44 61 74 61 50 74 72 |lockCach|eDataPtr|
|00001f60| 28 29 3b 0d 09 0d 09 69 | 66 20 28 21 62 6c 6f 63 |();....i|f (!bloc|
|00001f70| 6b 48 65 61 64 65 72 29 | 0d 09 09 72 65 74 75 72 |kHeader)|...retur|
|00001f80| 6e 3b 0d 09 0d 09 62 6c | 6f 63 6b 48 65 61 64 65 |n;....bl|ockHeade|
|00001f90| 72 2d 3e 66 4c 6f 63 6b | 43 6f 75 6e 74 20 3d 20 |r->fLock|Count = |
|00001fa0| 63 6f 75 6e 74 3b 0d 09 | 7d 20 2f 2f 20 54 4f 62 |count;..|} // TOb|
|00001fb0| 6a 65 63 74 42 6c 6f 63 | 6b 43 61 63 68 65 3a 3a |jectBloc|kCache::|
|00001fc0| 53 65 74 4c 6f 63 6b 43 | 6f 75 6e 74 20 0d 0d 2f |SetLockC|ount ../|
|00001fd0| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00001fe0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002000| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002010| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002020| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 54 4f 62 |--------|-.// TOb|
|00002030| 6a 65 63 74 42 6c 6f 63 | 6b 43 61 63 68 65 3a 3a |jectBloc|kCache::|
|00002040| 53 65 74 55 73 65 64 3a | 20 0d 2f 2f 0d 2f 2f 20 |SetUsed:| .//.// |
|00002050| a5 a5 a5 20 69 6e 6c 69 | 6e 65 20 74 68 69 73 0d |... inli|ne this.|
|00002060| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00002070| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002080| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002090| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000020a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000020b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 76 6f 69 64 20 |--------|--.void |
|000020c0| 54 4f 62 6a 65 63 74 42 | 6c 6f 63 6b 43 61 63 68 |TObjectB|lockCach|
|000020d0| 65 3a 3a 53 65 74 55 73 | 65 64 28 55 49 6e 74 33 |e::SetUs|ed(UInt3|
|000020e0| 32 20 63 61 63 68 65 53 | 69 7a 65 29 0d 09 7b 0d |2 cacheS|ize)..{.|
|000020f0| 09 50 74 72 20 72 65 73 | 75 6c 74 20 3d 20 41 6c |.Ptr res|ult = Al|
|00002100| 6c 6f 63 61 74 65 28 63 | 61 63 68 65 53 69 7a 65 |locate(c|acheSize|
|00002110| 20 2b 20 73 69 7a 65 6f | 66 28 54 4f 62 6a 65 63 | + sizeo|f(TObjec|
|00002120| 74 42 6c 6f 63 6b 43 61 | 63 68 65 48 65 61 64 65 |tBlockCa|cheHeade|
|00002130| 72 29 29 3b 09 09 09 09 | 09 0d 09 7d 20 2f 2f 20 |r));....|...} // |
|00002140| 54 4f 62 6a 65 63 74 42 | 6c 6f 63 6b 43 61 63 68 |TObjectB|lockCach|
|00002150| 65 3a 3a 53 65 74 55 73 | 65 64 20 0d 0d 2f 2f 2d |e::SetUs|ed ..//-|
|00002160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021b0| 2d 2d 2d 2d 2d 2d 2d 0d | 2f 2f 20 54 4f 62 6a 65 |-------.|// TObje|
|000021c0| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 3a 3a 53 74 |ctBlockC|ache::St|
|000021d0| 61 72 74 3a 20 0d 2f 2f | 0d 2f 2f 20 a5 a5 a5 20 |art: .//|.// ... |
|000021e0| 69 6e 6c 69 6e 65 20 74 | 68 69 73 0d 2f 2f 2d 2d |inline t|his.//--|
|000021f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002200| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002240| 2d 2d 2d 2d 2d 2d 0d 50 | 74 72 09 54 4f 62 6a 65 |------.P|tr.TObje|
|00002250| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 3a 3a 53 74 |ctBlockC|ache::St|
|00002260| 61 72 74 28 29 20 63 6f | 6e 73 74 0d 09 7b 0d 09 |art() co|nst..{..|
|00002270| 54 4f 62 6a 65 63 74 42 | 6c 6f 63 6b 43 61 63 68 |TObjectB|lockCach|
|00002280| 65 48 65 61 64 65 72 2a | 20 62 6c 6f 63 6b 48 65 |eHeader*| blockHe|
|00002290| 61 64 65 72 20 3d 20 42 | 6c 6f 63 6b 43 61 63 68 |ader = B|lockCach|
|000022a0| 65 44 61 74 61 50 74 72 | 28 29 3b 0d 09 0d 09 69 |eDataPtr|();....i|
|000022b0| 66 20 28 21 62 6c 6f 63 | 6b 48 65 61 64 65 72 29 |f (!bloc|kHeader)|
|000022c0| 0d 09 09 72 65 74 75 72 | 6e 20 6e 69 6c 3b 0d 09 |...retur|n nil;..|
|000022d0| 65 6c 73 65 0d 09 09 72 | 65 74 75 72 6e 20 28 28 |else...r|eturn ((|
|000022e0| 50 74 72 29 20 62 6c 6f | 63 6b 48 65 61 64 65 72 |Ptr) blo|ckHeader|
|000022f0| 29 20 2b 20 73 69 7a 65 | 6f 66 28 54 4f 62 6a 65 |) + size|of(TObje|
|00002300| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 48 65 61 64 |ctBlockC|acheHead|
|00002310| 65 72 29 3b 09 09 09 09 | 09 0d 09 7d 20 2f 2f 20 |er);....|...} // |
|00002320| 54 4f 62 6a 65 63 74 42 | 6c 6f 63 6b 43 61 63 68 |TObjectB|lockCach|
|00002330| 65 3a 3a 53 74 61 72 74 | 20 0d 09 20 0d 2f 2f 2d |e::Start| .. .//-|
|00002340| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002350| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002360| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002370| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002380| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002390| 2d 2d 2d 2d 2d 2d 2d 0d | 2f 2f 20 54 4f 62 6a 65 |-------.|// TObje|
|000023a0| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 3a 3a 45 6e |ctBlockC|ache::En|
|000023b0| 64 3a 20 0d 2f 2f 0d 2f | 2f 20 a5 a5 a5 20 69 6e |d: .//./|/ ... in|
|000023c0| 6c 69 6e 65 20 74 68 69 | 73 0d 2f 2f 2d 2d 2d 2d |line thi|s.//----|
|000023d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000023e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000023f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002420| 2d 2d 2d 2d 0d 50 74 72 | 09 54 4f 62 6a 65 63 74 |----.Ptr|.TObject|
|00002430| 42 6c 6f 63 6b 43 61 63 | 68 65 3a 3a 45 6e 64 28 |BlockCac|he::End(|
|00002440| 29 20 63 6f 6e 73 74 0d | 09 7b 0d 09 54 4f 62 6a |) const.|.{..TObj|
|00002450| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 48 65 61 |ectBlock|CacheHea|
|00002460| 64 65 72 2a 20 62 6c 6f | 63 6b 48 65 61 64 65 72 |der* blo|ckHeader|
|00002470| 20 3d 20 42 6c 6f 63 6b | 43 61 63 68 65 44 61 74 | = Block|CacheDat|
|00002480| 61 50 74 72 28 29 3b 0d | 09 0d 09 69 66 20 28 21 |aPtr();.|...if (!|
|00002490| 62 6c 6f 63 6b 48 65 61 | 64 65 72 29 0d 09 09 72 |blockHea|der)...r|
|000024a0| 65 74 75 72 6e 20 6e 69 | 6c 3b 0d 09 65 6c 73 65 |eturn ni|l;..else|
|000024b0| 0d 09 09 72 65 74 75 72 | 6e 20 28 28 50 74 72 29 |...retur|n ((Ptr)|
|000024c0| 20 62 6c 6f 63 6b 48 65 | 61 64 65 72 29 20 2b 20 | blockHe|ader) + |
|000024d0| 62 6c 6f 63 6b 48 65 61 | 64 65 72 2d 3e 66 4f 62 |blockHea|der->fOb|
|000024e0| 6a 65 63 74 43 61 63 68 | 65 48 65 61 64 65 72 2e |jectCach|eHeader.|
|000024f0| 66 55 73 65 64 3b 09 09 | 09 09 09 0d 09 7d 20 2f |fUsed;..|.....} /|
|00002500| 2f 20 54 4f 62 6a 65 63 | 74 42 6c 6f 63 6b 43 61 |/ TObjec|tBlockCa|
|00002510| 63 68 65 3a 3a 45 6e 64 | 20 0d 0d 2f 2f 2d 2d 2d |che::End| ..//---|
|00002520| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002530| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002540| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002550| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002560| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002570| 2d 2d 2d 2d 2d 0d 2f 2f | 20 54 4f 62 6a 65 63 74 |-----.//| TObject|
|00002580| 42 6c 6f 63 6b 43 61 63 | 68 65 3a 3a 55 73 65 64 |BlockCac|he::Used|
|00002590| 3a 20 0d 2f 2f 0d 2f 2f | 20 a5 a5 a5 20 69 6e 6c |: .//.//| ... inl|
|000025a0| 69 6e 65 20 74 68 69 73 | 0d 2f 2f 2d 2d 2d 2d 2d |ine this|.//-----|
|000025b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000025c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000025d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000025e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000025f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002600| 2d 2d 2d 0d 55 49 6e 74 | 33 32 20 54 4f 62 6a 65 |---.UInt|32 TObje|
|00002610| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 3a 3a 55 73 |ctBlockC|ache::Us|
|00002620| 65 64 28 29 20 63 6f 6e | 73 74 0d 09 7b 0d 09 54 |ed() con|st..{..T|
|00002630| 4f 62 6a 65 63 74 42 6c | 6f 63 6b 43 61 63 68 65 |ObjectBl|ockCache|
|00002640| 48 65 61 64 65 72 2a 20 | 62 6c 6f 63 6b 48 65 61 |Header* |blockHea|
|00002650| 64 65 72 20 3d 20 42 6c | 6f 63 6b 43 61 63 68 65 |der = Bl|ockCache|
|00002660| 44 61 74 61 50 74 72 28 | 29 3b 0d 09 0d 09 69 66 |DataPtr(|);....if|
|00002670| 20 28 21 62 6c 6f 63 6b | 48 65 61 64 65 72 29 0d | (!block|Header).|
|00002680| 09 09 72 65 74 75 72 6e | 20 30 3b 0d 09 65 6c 73 |..return| 0;..els|
|00002690| 65 0d 09 09 72 65 74 75 | 72 6e 20 62 6c 6f 63 6b |e...retu|rn block|
|000026a0| 48 65 61 64 65 72 2d 3e | 66 4f 62 6a 65 63 74 43 |Header->|fObjectC|
|000026b0| 61 63 68 65 48 65 61 64 | 65 72 2e 66 55 73 65 64 |acheHead|er.fUsed|
|000026c0| 20 2d 20 73 69 7a 65 6f | 66 28 54 4f 62 6a 65 63 | - sizeo|f(TObjec|
|000026d0| 74 42 6c 6f 63 6b 43 61 | 63 68 65 48 65 61 64 65 |tBlockCa|cheHeade|
|000026e0| 72 29 3b 09 09 09 09 09 | 0d 09 7d 20 2f 2f 20 54 |r);.....|..} // T|
|000026f0| 4f 62 6a 65 63 74 42 6c | 6f 63 6b 43 61 63 68 65 |ObjectBl|ockCache|
|00002700| 3a 3a 55 73 65 64 20 0d | 09 0d 2f 2f 2d 2d 2d 2d |::Used .|..//----|
|00002710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002730| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002750| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002760| 2d 2d 2d 2d 0d 2f 2f 20 | 54 4f 62 6a 65 63 74 42 |----.// |TObjectB|
|00002770| 6c 6f 63 6b 43 61 63 68 | 65 3a 3a 47 65 74 55 49 |lockCach|e::GetUI|
|00002780| 6e 74 31 36 3a 20 0d 2f | 2f 0d 2f 2f 20 a5 a5 a5 |nt16: ./|/.// ...|
|00002790| 20 69 6e 6c 69 6e 65 20 | 74 68 69 73 0d 2f 2f 2d | inline |this.//-|
|000027a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027f0| 2d 2d 2d 2d 2d 2d 2d 0d | 55 49 6e 74 31 36 20 54 |-------.|UInt16 T|
|00002800| 4f 62 6a 65 63 74 42 6c | 6f 63 6b 43 61 63 68 65 |ObjectBl|ockCache|
|00002810| 3a 3a 47 65 74 55 49 6e | 74 31 36 28 55 49 6e 74 |::GetUIn|t16(UInt|
|00002820| 33 32 20 6f 66 66 73 65 | 74 29 20 63 6f 6e 73 74 |32 offse|t) const|
|00002830| 09 09 09 09 0d 09 7b 0d | 09 54 4f 62 6a 65 63 74 |......{.|.TObject|
|00002840| 42 6c 6f 63 6b 43 61 63 | 68 65 48 65 61 64 65 72 |BlockCac|heHeader|
|00002850| 2a 20 62 6c 6f 63 6b 48 | 65 61 64 65 72 20 3d 20 |* blockH|eader = |
|00002860| 42 6c 6f 63 6b 43 61 63 | 68 65 44 61 74 61 50 74 |BlockCac|heDataPt|
|00002870| 72 28 29 3b 0d 09 0d 09 | 69 66 20 28 21 62 6c 6f |r();....|if (!blo|
|00002880| 63 6b 48 65 61 64 65 72 | 29 0d 09 09 72 65 74 75 |ckHeader|)...retu|
|00002890| 72 6e 20 30 3b 0d 09 65 | 6c 73 65 0d 09 09 72 65 |rn 0;..e|lse...re|
|000028a0| 74 75 72 6e 20 2a 20 28 | 55 49 6e 74 31 36 2a 29 |turn * (|UInt16*)|
|000028b0| 20 28 20 28 28 50 74 72 | 29 20 62 6c 6f 63 6b 48 | ( ((Ptr|) blockH|
|000028c0| 65 61 64 65 72 29 20 2b | 20 6f 66 66 73 65 74 20 |eader) +| offset |
|000028d0| 2b 20 73 69 7a 65 6f 66 | 28 54 4f 62 6a 65 63 74 |+ sizeof|(TObject|
|000028e0| 42 6c 6f 63 6b 43 61 63 | 68 65 48 65 61 64 65 72 |BlockCac|heHeader|
|000028f0| 29 29 3b 09 09 09 09 09 | 0d 09 7d 20 2f 2f 20 54 |));.....|..} // T|
|00002900| 4f 62 6a 65 63 74 42 6c | 6f 63 6b 43 61 63 68 65 |ObjectBl|ockCache|
|00002910| 3a 3a 47 65 74 55 49 6e | 74 31 36 20 0d 09 0d 2f |::GetUIn|t16 .../|
|00002920| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00002930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 54 4f 62 |--------|-.// TOb|
|00002980| 6a 65 63 74 42 6c 6f 63 | 6b 43 61 63 68 65 3a 3a |jectBloc|kCache::|
|00002990| 47 65 74 55 49 6e 74 33 | 32 3a 20 0d 2f 2f 0d 2f |GetUInt3|2: .//./|
|000029a0| 2f 20 a5 a5 a5 20 69 6e | 6c 69 6e 65 20 74 68 69 |/ ... in|line thi|
|000029b0| 73 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |s.//----|--------|
|000029c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000029d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000029e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000029f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002a00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 55 49 6e |--------|----.UIn|
|00002a10| 74 33 32 20 54 4f 62 6a | 65 63 74 42 6c 6f 63 6b |t32 TObj|ectBlock|
|00002a20| 43 61 63 68 65 3a 3a 47 | 65 74 55 49 6e 74 33 32 |Cache::G|etUInt32|
|00002a30| 28 55 49 6e 74 33 32 20 | 6f 66 66 73 65 74 29 20 |(UInt32 |offset) |
|00002a40| 63 6f 6e 73 74 09 09 09 | 09 0d 09 7b 0d 09 54 4f |const...|...{..TO|
|00002a50| 62 6a 65 63 74 42 6c 6f | 63 6b 43 61 63 68 65 48 |bjectBlo|ckCacheH|
|00002a60| 65 61 64 65 72 2a 20 62 | 6c 6f 63 6b 48 65 61 64 |eader* b|lockHead|
|00002a70| 65 72 20 3d 20 42 6c 6f | 63 6b 43 61 63 68 65 44 |er = Blo|ckCacheD|
|00002a80| 61 74 61 50 74 72 28 29 | 3b 0d 09 0d 09 69 66 20 |ataPtr()|;....if |
|00002a90| 28 21 62 6c 6f 63 6b 48 | 65 61 64 65 72 29 0d 09 |(!blockH|eader)..|
|00002aa0| 09 72 65 74 75 72 6e 20 | 30 3b 0d 09 65 6c 73 65 |.return |0;..else|
|00002ab0| 0d 09 09 72 65 74 75 72 | 6e 20 2a 20 28 55 49 6e |...retur|n * (UIn|
|00002ac0| 74 33 32 2a 29 20 28 20 | 28 28 50 74 72 29 20 62 |t32*) ( |((Ptr) b|
|00002ad0| 6c 6f 63 6b 48 65 61 64 | 65 72 29 20 2b 20 6f 66 |lockHead|er) + of|
|00002ae0| 66 73 65 74 20 2b 20 73 | 69 7a 65 6f 66 28 54 4f |fset + s|izeof(TO|
|00002af0| 62 6a 65 63 74 42 6c 6f | 63 6b 43 61 63 68 65 48 |bjectBlo|ckCacheH|
|00002b00| 65 61 64 65 72 29 29 3b | 09 0d 09 7d 20 2f 2f 20 |eader));|...} // |
|00002b10| 54 4f 62 6a 65 63 74 42 | 6c 6f 63 6b 43 61 63 68 |TObjectB|lockCach|
|00002b20| 65 3a 3a 47 65 74 55 49 | 6e 74 33 32 20 0d 09 0d |e::GetUI|nt32 ...|
|00002b30| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00002b40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 2f 2f 20 54 4f |--------|--.// TO|
|00002b90| 62 6a 65 63 74 42 6c 6f | 63 6b 43 61 63 68 65 3a |bjectBlo|ckCache:|
|00002ba0| 3a 47 65 74 49 6e 74 36 | 34 3a 20 0d 2f 2f 0d 2f |:GetInt6|4: .//./|
|00002bb0| 2f 20 a5 a5 a5 20 69 6e | 6c 69 6e 65 20 74 68 69 |/ ... in|line thi|
|00002bc0| 73 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |s.//----|--------|
|00002bd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002be0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002bf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002c00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002c10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 49 6e 74 |--------|----.Int|
|00002c20| 36 34 20 54 4f 62 6a 65 | 63 74 42 6c 6f 63 6b 43 |64 TObje|ctBlockC|
|00002c30| 61 63 68 65 3a 3a 47 65 | 74 49 6e 74 36 34 28 55 |ache::Ge|tInt64(U|
|00002c40| 49 6e 74 33 32 20 6f 66 | 66 73 65 74 29 20 63 6f |Int32 of|fset) co|
|00002c50| 6e 73 74 09 09 09 09 0d | 09 7b 0d 09 54 4f 62 6a |nst.....|.{..TObj|
|00002c60| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 48 65 61 |ectBlock|CacheHea|
|00002c70| 64 65 72 2a 20 62 6c 6f | 63 6b 48 65 61 64 65 72 |der* blo|ckHeader|
|00002c80| 20 3d 20 42 6c 6f 63 6b | 43 61 63 68 65 44 61 74 | = Block|CacheDat|
|00002c90| 61 50 74 72 28 29 3b 0d | 09 0d 09 69 66 20 28 21 |aPtr();.|...if (!|
|00002ca0| 62 6c 6f 63 6b 48 65 61 | 64 65 72 29 0d 09 09 72 |blockHea|der)...r|
|00002cb0| 65 74 75 72 6e 20 30 3b | 0d 09 65 6c 73 65 0d 09 |eturn 0;|..else..|
|00002cc0| 09 72 65 74 75 72 6e 20 | 2a 20 28 49 6e 74 36 34 |.return |* (Int64|
|00002cd0| 2a 29 20 20 28 20 28 28 | 50 74 72 29 20 62 6c 6f |*) ( ((|Ptr) blo|
|00002ce0| 63 6b 48 65 61 64 65 72 | 29 20 2b 20 6f 66 66 73 |ckHeader|) + offs|
|00002cf0| 65 74 20 2b 20 73 69 7a | 65 6f 66 28 54 4f 62 6a |et + siz|eof(TObj|
|00002d00| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 48 65 61 |ectBlock|CacheHea|
|00002d10| 64 65 72 29 29 3b 09 0d | 09 7d 20 2f 2f 20 54 4f |der));..|.} // TO|
|00002d20| 62 6a 65 63 74 42 6c 6f | 63 6b 43 61 63 68 65 3a |bjectBlo|ckCache:|
|00002d30| 3a 47 65 74 49 6e 74 36 | 34 20 0d 09 0d 2f 2f 2d |:GetInt6|4 ...//-|
|00002d40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d90| 2d 2d 2d 2d 2d 2d 2d 0d | 2f 2f 20 54 4f 62 6a 65 |-------.|// TObje|
|00002da0| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 3a 3a 47 65 |ctBlockC|ache::Ge|
|00002db0| 74 50 74 72 3a 20 0d 2f | 2f 0d 2f 2f 20 a5 a5 a5 |tPtr: ./|/.// ...|
|00002dc0| 20 69 6e 6c 69 6e 65 20 | 74 68 69 73 0d 2f 2f 2d | inline |this.//-|
|00002dd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002de0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002df0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002e00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002e10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002e20| 2d 2d 2d 2d 2d 2d 2d 0d | 50 74 72 09 54 4f 62 6a |-------.|Ptr.TObj|
|00002e30| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 3a 3a 47 |ectBlock|Cache::G|
|00002e40| 65 74 50 74 72 28 55 49 | 6e 74 33 32 20 6f 66 66 |etPtr(UI|nt32 off|
|00002e50| 73 65 74 29 20 63 6f 6e | 73 74 09 09 09 09 0d 09 |set) con|st......|
|00002e60| 7b 0d 09 54 4f 62 6a 65 | 63 74 42 6c 6f 63 6b 43 |{..TObje|ctBlockC|
|00002e70| 61 63 68 65 48 65 61 64 | 65 72 2a 20 62 6c 6f 63 |acheHead|er* bloc|
|00002e80| 6b 48 65 61 64 65 72 20 | 3d 20 42 6c 6f 63 6b 43 |kHeader |= BlockC|
|00002e90| 61 63 68 65 44 61 74 61 | 50 74 72 28 29 3b 0d 09 |acheData|Ptr();..|
|00002ea0| 0d 09 69 66 20 28 21 62 | 6c 6f 63 6b 48 65 61 64 |..if (!b|lockHead|
|00002eb0| 65 72 29 0d 09 09 72 65 | 74 75 72 6e 20 30 3b 0d |er)...re|turn 0;.|
|00002ec0| 09 65 6c 73 65 0d 09 09 | 72 65 74 75 72 6e 20 28 |.else...|return (|
|00002ed0| 50 74 72 29 20 28 20 28 | 28 50 74 72 29 20 62 6c |Ptr) ( (|(Ptr) bl|
|00002ee0| 6f 63 6b 48 65 61 64 65 | 72 29 20 2b 20 6f 66 66 |ockHeade|r) + off|
|00002ef0| 73 65 74 20 2b 20 73 69 | 7a 65 6f 66 28 54 4f 62 |set + si|zeof(TOb|
|00002f00| 6a 65 63 74 42 6c 6f 63 | 6b 43 61 63 68 65 48 65 |jectBloc|kCacheHe|
|00002f10| 61 64 65 72 29 29 3b 09 | 0d 09 7d 20 2f 2f 20 54 |ader));.|..} // T|
|00002f20| 4f 62 6a 65 63 74 42 6c | 6f 63 6b 43 61 63 68 65 |ObjectBl|ockCache|
|00002f30| 3a 3a 47 65 74 50 74 72 | 20 0d 0d 2f 2f 2d 2d 2d |::GetPtr| ..//---|
|00002f40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002f50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002f60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002f70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002f80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002f90| 2d 2d 2d 2d 2d 0d 2f 2f | 20 54 4f 62 6a 65 63 74 |-----.//| TObject|
|00002fa0| 42 6c 6f 63 6b 43 61 63 | 68 65 3a 3a 53 65 74 3a |BlockCac|he::Set:|
|00002fb0| 0d 2f 2f 0d 2f 2f 20 46 | 6f 72 20 55 49 6e 74 31 |.//.// F|or UInt1|
|00002fc0| 36 27 73 0d 2f 2f 0d 2f | 2f 20 a5 a5 a5 20 69 6e |6's.//./|/ ... in|
|00002fd0| 6c 69 6e 65 20 74 68 69 | 73 0d 2f 2f 2d 2d 2d 2d |line thi|s.//----|
|00002fe0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003000| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003010| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003020| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003030| 2d 2d 2d 2d 0d 76 6f 69 | 64 20 54 4f 62 6a 65 63 |----.voi|d TObjec|
|00003040| 74 42 6c 6f 63 6b 43 61 | 63 68 65 3a 3a 53 65 74 |tBlockCa|che::Set|
|00003050| 28 55 49 6e 74 31 36 20 | 76 61 6c 75 65 2c 20 55 |(UInt16 |value, U|
|00003060| 49 6e 74 33 32 20 6f 66 | 66 73 65 74 29 09 09 0d |Int32 of|fset)...|
|00003070| 09 7b 0d 09 54 4f 62 6a | 65 63 74 42 6c 6f 63 6b |.{..TObj|ectBlock|
|00003080| 43 61 63 68 65 48 65 61 | 64 65 72 2a 20 62 6c 6f |CacheHea|der* blo|
|00003090| 63 6b 48 65 61 64 65 72 | 20 3d 20 42 6c 6f 63 6b |ckHeader| = Block|
|000030a0| 43 61 63 68 65 44 61 74 | 61 50 74 72 28 29 3b 0d |CacheDat|aPtr();.|
|000030b0| 09 0d 09 2f 2f 0d 09 2f | 2f 20 49 66 20 74 68 65 |...//../|/ If the|
|000030c0| 72 65 20 77 61 73 6e 27 | 74 20 61 20 62 6c 6f 63 |re wasn'|t a bloc|
|000030d0| 6b 20 62 65 66 6f 72 65 | 20 28 61 63 6b 21 29 2c |k before| (ack!),|
|000030e0| 20 6f 72 20 69 66 20 74 | 68 65 20 61 76 61 69 6c | or if t|he avail|
|000030f0| 61 62 6c 65 20 73 70 61 | 63 65 20 69 6e 20 74 68 |able spa|ce in th|
|00003100| 65 20 62 6c 6f 63 6b 20 | 64 6f 65 73 6e 27 74 0d |e block |doesn't.|
|00003110| 09 2f 2f 20 6d 65 65 74 | 20 6f 75 72 20 6e 65 65 |.// meet| our nee|
|00003120| 64 73 2c 20 74 68 65 6e | 20 63 61 6c 6c 20 61 6c |ds, then| call al|
|00003130| 6c 6f 63 61 74 65 20 61 | 6e 64 20 74 72 79 20 74 |locate a|nd try t|
|00003140| 6f 20 67 65 74 20 73 6f | 6d 65 20 6d 6f 72 65 2e |o get so|me more.|
|00003150| 20 20 54 4f 62 6a 65 63 | 74 43 61 63 68 65 3a 3a | TObjec|tCache::|
|00003160| 41 6c 6c 6f 63 61 74 65 | 0d 09 2f 2f 20 77 69 6c |Allocate|..// wil|
|00003170| 6c 20 64 6f 20 63 68 75 | 6e 6b 79 20 61 6c 6c 6f |l do chu|nky allo|
|00003180| 63 61 74 69 6f 6e 20 66 | 69 72 73 74 20 28 69 65 |cation f|irst (ie|
|00003190| 2c 20 74 72 79 20 74 6f | 20 67 65 74 20 6d 6f 72 |, try to| get mor|
|000031a0| 65 20 6d 65 6d 6f 72 79 | 20 66 72 6f 6d 20 74 68 |e memory| from th|
|000031b0| 65 20 63 75 72 72 65 6e | 74 20 62 6c 6f 63 6b 29 |e curren|t block)|
|000031c0| 2c 0d 09 2f 2f 20 74 68 | 65 6e 20 69 74 20 77 69 |,..// th|en it wi|
|000031d0| 6c 6c 20 61 6c 6c 6f 63 | 61 74 65 20 61 6e 6f 74 |ll alloc|ate anot|
|000031e0| 68 65 72 20 62 6c 6f 63 | 6b 20 61 6e 64 20 6d 6f |her bloc|k and mo|
|000031f0| 76 65 20 74 68 65 20 63 | 6f 6e 74 65 6e 74 73 20 |ve the c|ontents |
|00003200| 66 72 6f 6d 20 74 68 65 | 20 6f 6c 64 20 63 61 63 |from the| old cac|
|00003210| 68 65 20 74 6f 20 74 68 | 65 0d 09 2f 2f 20 6e 65 |he to th|e..// ne|
|00003220| 77 20 63 61 63 68 65 0d | 09 2f 2f 0d 09 69 66 20 |w cache.|.//..if |
|00003230| 28 20 28 21 62 6c 6f 63 | 6b 48 65 61 64 65 72 29 |( (!bloc|kHeader)|
|00003240| 20 7c 7c 0d 09 20 20 20 | 20 20 28 28 62 6c 6f 63 | ||.. | ((bloc|
|00003250| 6b 48 65 61 64 65 72 2d | 3e 66 4f 62 6a 65 63 74 |kHeader-|>fObject|
|00003260| 43 61 63 68 65 48 65 61 | 64 65 72 2e 66 55 73 65 |CacheHea|der.fUse|
|00003270| 64 20 2d 20 73 69 7a 65 | 6f 66 28 54 4f 62 6a 65 |d - size|of(TObje|
|00003280| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 48 65 61 64 |ctBlockC|acheHead|
|00003290| 65 72 29 20 2d 20 73 69 | 7a 65 6f 66 28 55 49 6e |er) - si|zeof(UIn|
|000032a0| 74 31 36 29 29 20 3e 3d | 20 6f 66 66 73 65 74 29 |t16)) >=| offset)|
|000032b0| 20 29 0d 09 09 7b 0d 09 | 09 62 6c 6f 63 6b 48 65 | )...{..|.blockHe|
|000032c0| 61 64 65 72 20 3d 20 28 | 54 4f 62 6a 65 63 74 42 |ader = (|TObjectB|
|000032d0| 6c 6f 63 6b 43 61 63 68 | 65 48 65 61 64 65 72 2a |lockCach|eHeader*|
|000032e0| 29 20 41 6c 6c 6f 63 61 | 74 65 28 20 6f 66 66 73 |) Alloca|te( offs|
|000032f0| 65 74 20 2b 20 73 69 7a | 65 6f 66 28 54 4f 62 6a |et + siz|eof(TObj|
|00003300| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 48 65 61 |ectBlock|CacheHea|
|00003310| 64 65 72 29 20 2b 20 73 | 69 7a 65 6f 66 28 55 49 |der) + s|izeof(UI|
|00003320| 6e 74 31 36 29 29 3b 0d | 09 09 7d 0d 09 09 0d 20 |nt16));.|..}.... |
|00003330| 09 2a 20 28 55 49 6e 74 | 31 36 2a 29 20 20 28 20 |.* (UInt|16*) ( |
|00003340| 28 28 50 74 72 29 20 62 | 6c 6f 63 6b 48 65 61 64 |((Ptr) b|lockHead|
|00003350| 65 72 29 20 2b 20 6f 66 | 66 73 65 74 20 2b 20 73 |er) + of|fset + s|
|00003360| 69 7a 65 6f 66 28 54 4f | 62 6a 65 63 74 42 6c 6f |izeof(TO|bjectBlo|
|00003370| 63 6b 43 61 63 68 65 48 | 65 61 64 65 72 29 29 20 |ckCacheH|eader)) |
|00003380| 3d 20 76 61 6c 75 65 3b | 09 0d 09 7d 20 2f 2f 20 |= value;|...} // |
|00003390| 54 4f 62 6a 65 63 74 42 | 6c 6f 63 6b 43 61 63 68 |TObjectB|lockCach|
|000033a0| 65 3a 3a 53 65 74 20 0d | 09 0d 2f 2f 2d 2d 2d 2d |e::Set .|..//----|
|000033b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000033c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000033d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000033e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000033f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003400| 2d 2d 2d 2d 0d 2f 2f 20 | 54 4f 62 6a 65 63 74 42 |----.// |TObjectB|
|00003410| 6c 6f 63 6b 43 61 63 68 | 65 3a 3a 53 65 74 3a 0d |lockCach|e::Set:.|
|00003420| 2f 2f 0d 2f 2f 20 46 6f | 72 20 55 49 6e 74 33 32 |//.// Fo|r UInt32|
|00003430| 27 73 20 0d 2f 2f 0d 2f | 2f 20 a5 a5 a5 20 69 6e |'s .//./|/ ... in|
|00003440| 6c 69 6e 65 20 74 68 69 | 73 0d 2f 2f 2d 2d 2d 2d |line thi|s.//----|
|00003450| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003460| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003470| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003480| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003490| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000034a0| 2d 2d 2d 2d 0d 76 6f 69 | 64 20 54 4f 62 6a 65 63 |----.voi|d TObjec|
|000034b0| 74 42 6c 6f 63 6b 43 61 | 63 68 65 3a 3a 53 65 74 |tBlockCa|che::Set|
|000034c0| 28 55 49 6e 74 33 32 20 | 76 61 6c 75 65 2c 20 55 |(UInt32 |value, U|
|000034d0| 49 6e 74 33 32 20 6f 66 | 66 73 65 74 29 09 09 0d |Int32 of|fset)...|
|000034e0| 09 7b 0d 09 54 4f 62 6a | 65 63 74 42 6c 6f 63 6b |.{..TObj|ectBlock|
|000034f0| 43 61 63 68 65 48 65 61 | 64 65 72 2a 20 62 6c 6f |CacheHea|der* blo|
|00003500| 63 6b 48 65 61 64 65 72 | 20 3d 20 42 6c 6f 63 6b |ckHeader| = Block|
|00003510| 43 61 63 68 65 44 61 74 | 61 50 74 72 28 29 3b 0d |CacheDat|aPtr();.|
|00003520| 09 0d 09 2f 2f 0d 09 2f | 2f 20 49 66 20 74 68 65 |...//../|/ If the|
|00003530| 72 65 20 77 61 73 6e 27 | 74 20 61 20 62 6c 6f 63 |re wasn'|t a bloc|
|00003540| 6b 20 62 65 66 6f 72 65 | 20 28 61 63 6b 21 29 2c |k before| (ack!),|
|00003550| 20 6f 72 20 69 66 20 74 | 68 65 20 61 76 61 69 6c | or if t|he avail|
|00003560| 61 62 6c 65 20 73 70 61 | 63 65 20 69 6e 20 74 68 |able spa|ce in th|
|00003570| 65 20 62 6c 6f 63 6b 20 | 64 6f 65 73 6e 27 74 0d |e block |doesn't.|
|00003580| 09 2f 2f 20 6d 65 65 74 | 20 6f 75 72 20 6e 65 65 |.// meet| our nee|
|00003590| 64 73 2c 20 74 68 65 6e | 20 63 61 6c 6c 20 61 6c |ds, then| call al|
|000035a0| 6c 6f 63 61 74 65 20 61 | 6e 64 20 74 72 79 20 74 |locate a|nd try t|
|000035b0| 6f 20 67 65 74 20 73 6f | 6d 65 20 6d 6f 72 65 2e |o get so|me more.|
|000035c0| 20 20 54 4f 62 6a 65 63 | 74 43 61 63 68 65 3a 3a | TObjec|tCache::|
|000035d0| 41 6c 6c 6f 63 61 74 65 | 0d 09 2f 2f 20 77 69 6c |Allocate|..// wil|
|000035e0| 6c 20 64 6f 20 63 68 75 | 6e 6b 79 20 61 6c 6c 6f |l do chu|nky allo|
|000035f0| 63 61 74 69 6f 6e 20 66 | 69 72 73 74 20 28 69 65 |cation f|irst (ie|
|00003600| 2c 20 74 72 79 20 74 6f | 20 67 65 74 20 6d 6f 72 |, try to| get mor|
|00003610| 65 20 6d 65 6d 6f 72 79 | 20 66 72 6f 6d 20 74 68 |e memory| from th|
|00003620| 65 20 63 75 72 72 65 6e | 74 20 62 6c 6f 63 6b 29 |e curren|t block)|
|00003630| 2c 0d 09 2f 2f 20 74 68 | 65 6e 20 69 74 20 77 69 |,..// th|en it wi|
|00003640| 6c 6c 20 61 6c 6c 6f 63 | 61 74 65 20 61 6e 6f 74 |ll alloc|ate anot|
|00003650| 68 65 72 20 62 6c 6f 63 | 6b 20 61 6e 64 20 6d 6f |her bloc|k and mo|
|00003660| 76 65 20 74 68 65 20 63 | 6f 6e 74 65 6e 74 73 20 |ve the c|ontents |
|00003670| 66 72 6f 6d 20 74 68 65 | 20 6f 6c 64 20 63 61 63 |from the| old cac|
|00003680| 68 65 20 74 6f 20 74 68 | 65 0d 09 2f 2f 20 6e 65 |he to th|e..// ne|
|00003690| 77 20 63 61 63 68 65 0d | 09 2f 2f 0d 09 69 66 20 |w cache.|.//..if |
|000036a0| 28 20 28 21 62 6c 6f 63 | 6b 48 65 61 64 65 72 29 |( (!bloc|kHeader)|
|000036b0| 20 7c 7c 0d 09 20 20 20 | 20 20 28 28 62 6c 6f 63 | ||.. | ((bloc|
|000036c0| 6b 48 65 61 64 65 72 2d | 3e 66 4f 62 6a 65 63 74 |kHeader-|>fObject|
|000036d0| 43 61 63 68 65 48 65 61 | 64 65 72 2e 66 55 73 65 |CacheHea|der.fUse|
|000036e0| 64 20 2d 20 73 69 7a 65 | 6f 66 28 54 4f 62 6a 65 |d - size|of(TObje|
|000036f0| 63 74 42 6c 6f 63 6b 43 | 61 63 68 65 48 65 61 64 |ctBlockC|acheHead|
|00003700| 65 72 29 20 2d 20 73 69 | 7a 65 6f 66 28 55 49 6e |er) - si|zeof(UIn|
|00003710| 74 33 32 29 29 20 3e 3d | 20 6f 66 66 73 65 74 29 |t32)) >=| offset)|
|00003720| 20 29 0d 09 09 7b 0d 09 | 09 62 6c 6f 63 6b 48 65 | )...{..|.blockHe|
|00003730| 61 64 65 72 20 3d 20 28 | 54 4f 62 6a 65 63 74 42 |ader = (|TObjectB|
|00003740| 6c 6f 63 6b 43 61 63 68 | 65 48 65 61 64 65 72 2a |lockCach|eHeader*|
|00003750| 29 20 41 6c 6c 6f 63 61 | 74 65 28 20 6f 66 66 73 |) Alloca|te( offs|
|00003760| 65 74 20 2b 20 73 69 7a | 65 6f 66 28 54 4f 62 6a |et + siz|eof(TObj|
|00003770| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 48 65 61 |ectBlock|CacheHea|
|00003780| 64 65 72 29 20 2b 20 73 | 69 7a 65 6f 66 28 55 49 |der) + s|izeof(UI|
|00003790| 6e 74 33 32 29 29 3b 0d | 09 09 7d 0d 0d 09 2a 20 |nt32));.|..}...* |
|000037a0| 28 55 49 6e 74 33 32 2a | 29 20 20 28 20 28 28 50 |(UInt32*|) ( ((P|
|000037b0| 74 72 29 20 62 6c 6f 63 | 6b 48 65 61 64 65 72 29 |tr) bloc|kHeader)|
|000037c0| 20 2b 20 6f 66 66 73 65 | 74 20 2b 20 73 69 7a 65 | + offse|t + size|
|000037d0| 6f 66 28 54 4f 62 6a 65 | 63 74 42 6c 6f 63 6b 43 |of(TObje|ctBlockC|
|000037e0| 61 63 68 65 48 65 61 64 | 65 72 29 29 20 3d 20 76 |acheHead|er)) = v|
|000037f0| 61 6c 75 65 3b 09 0d 09 | 7d 20 2f 2f 20 54 4f 62 |alue;...|} // TOb|
|00003800| 6a 65 63 74 42 6c 6f 63 | 6b 43 61 63 68 65 3a 3a |jectBloc|kCache::|
|00003810| 53 65 74 20 0d 09 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |Set .../|/-------|
|00003820| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003830| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003840| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003850| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003860| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003870| 2d 0d 2f 2f 20 54 4f 62 | 6a 65 63 74 42 6c 6f 63 |-.// TOb|jectBloc|
|00003880| 6b 43 61 63 68 65 3a 3a | 53 65 74 3a 0d 2f 2f 0d |kCache::|Set:.//.|
|00003890| 2f 2f 20 46 6f 72 20 49 | 6e 74 36 34 27 73 20 0d |// For I|nt64's .|
|000038a0| 2f 2f 0d 2f 2f 20 a5 a5 | a5 20 69 6e 6c 69 6e 65 |//.// ..|. inline|
|000038b0| 20 74 68 69 73 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d | this.//|--------|
|000038c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000038d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000038e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000038f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003900| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003910| 0d 76 6f 69 64 20 54 4f | 62 6a 65 63 74 42 6c 6f |.void TO|bjectBlo|
|00003920| 63 6b 43 61 63 68 65 3a | 3a 53 65 74 28 49 6e 74 |ckCache:|:Set(Int|
|00003930| 36 34 20 76 61 6c 75 65 | 2c 20 20 55 49 6e 74 33 |64 value|, UInt3|
|00003940| 32 20 6f 66 66 73 65 74 | 29 09 09 0d 09 7b 0d 09 |2 offset|)....{..|
|00003950| 54 4f 62 6a 65 63 74 42 | 6c 6f 63 6b 43 61 63 68 |TObjectB|lockCach|
|00003960| 65 48 65 61 64 65 72 2a | 20 62 6c 6f 63 6b 48 65 |eHeader*| blockHe|
|00003970| 61 64 65 72 20 3d 20 42 | 6c 6f 63 6b 43 61 63 68 |ader = B|lockCach|
|00003980| 65 44 61 74 61 50 74 72 | 28 29 3b 0d 09 0d 09 2f |eDataPtr|();..../|
|00003990| 2f 0d 09 2f 2f 20 49 66 | 20 74 68 65 72 65 20 77 |/..// If| there w|
|000039a0| 61 73 6e 27 74 20 61 20 | 62 6c 6f 63 6b 20 62 65 |asn't a |block be|
|000039b0| 66 6f 72 65 20 28 61 63 | 6b 21 29 2c 20 6f 72 20 |fore (ac|k!), or |
|000039c0| 69 66 20 74 68 65 20 61 | 76 61 69 6c 61 62 6c 65 |if the a|vailable|
|000039d0| 20 73 70 61 63 65 20 69 | 6e 20 74 68 65 20 62 6c | space i|n the bl|
|000039e0| 6f 63 6b 20 64 6f 65 73 | 6e 27 74 0d 09 2f 2f 20 |ock does|n't..// |
|000039f0| 6d 65 65 74 20 6f 75 72 | 20 6e 65 65 64 73 2c 20 |meet our| needs, |
|00003a00| 74 68 65 6e 20 63 61 6c | 6c 20 61 6c 6c 6f 63 61 |then cal|l alloca|
|00003a10| 74 65 20 61 6e 64 20 74 | 72 79 20 74 6f 20 67 65 |te and t|ry to ge|
|00003a20| 74 20 73 6f 6d 65 20 6d | 6f 72 65 2e 20 20 54 4f |t some m|ore. TO|
|00003a30| 62 6a 65 63 74 43 61 63 | 68 65 3a 3a 41 6c 6c 6f |bjectCac|he::Allo|
|00003a40| 63 61 74 65 0d 09 2f 2f | 20 77 69 6c 6c 20 64 6f |cate..//| will do|
|00003a50| 20 63 68 75 6e 6b 79 20 | 61 6c 6c 6f 63 61 74 69 | chunky |allocati|
|00003a60| 6f 6e 20 66 69 72 73 74 | 20 28 69 65 2c 20 74 72 |on first| (ie, tr|
|00003a70| 79 20 74 6f 20 67 65 74 | 20 6d 6f 72 65 20 6d 65 |y to get| more me|
|00003a80| 6d 6f 72 79 20 66 72 6f | 6d 20 74 68 65 20 63 75 |mory fro|m the cu|
|00003a90| 72 72 65 6e 74 20 62 6c | 6f 63 6b 29 2c 0d 09 2f |rrent bl|ock),../|
|00003aa0| 2f 20 74 68 65 6e 20 69 | 74 20 77 69 6c 6c 20 61 |/ then i|t will a|
|00003ab0| 6c 6c 6f 63 61 74 65 20 | 61 6e 6f 74 68 65 72 20 |llocate |another |
|00003ac0| 62 6c 6f 63 6b 20 61 6e | 64 20 6d 6f 76 65 20 74 |block an|d move t|
|00003ad0| 68 65 20 63 6f 6e 74 65 | 6e 74 73 20 66 72 6f 6d |he conte|nts from|
|00003ae0| 20 74 68 65 20 6f 6c 64 | 20 63 61 63 68 65 20 74 | the old| cache t|
|00003af0| 6f 20 74 68 65 0d 09 2f | 2f 20 6e 65 77 20 63 61 |o the../|/ new ca|
|00003b00| 63 68 65 0d 09 2f 2f 0d | 09 69 66 20 28 20 28 21 |che..//.|.if ( (!|
|00003b10| 62 6c 6f 63 6b 48 65 61 | 64 65 72 29 20 7c 7c 0d |blockHea|der) ||.|
|00003b20| 09 20 20 20 20 20 28 28 | 62 6c 6f 63 6b 48 65 61 |. ((|blockHea|
|00003b30| 64 65 72 2d 3e 66 4f 62 | 6a 65 63 74 43 61 63 68 |der->fOb|jectCach|
|00003b40| 65 48 65 61 64 65 72 2e | 66 55 73 65 64 20 2d 20 |eHeader.|fUsed - |
|00003b50| 73 69 7a 65 6f 66 28 54 | 4f 62 6a 65 63 74 42 6c |sizeof(T|ObjectBl|
|00003b60| 6f 63 6b 43 61 63 68 65 | 48 65 61 64 65 72 29 20 |ockCache|Header) |
|00003b70| 2d 20 73 69 7a 65 6f 66 | 28 49 6e 74 36 34 29 29 |- sizeof|(Int64))|
|00003b80| 20 3e 3d 20 6f 66 66 73 | 65 74 29 20 29 0d 09 09 | >= offs|et) )...|
|00003b90| 7b 0d 09 09 62 6c 6f 63 | 6b 48 65 61 64 65 72 20 |{...bloc|kHeader |
|00003ba0| 3d 20 28 54 4f 62 6a 65 | 63 74 42 6c 6f 63 6b 43 |= (TObje|ctBlockC|
|00003bb0| 61 63 68 65 48 65 61 64 | 65 72 2a 29 20 41 6c 6c |acheHead|er*) All|
|00003bc0| 6f 63 61 74 65 28 20 6f | 66 66 73 65 74 20 2b 20 |ocate( o|ffset + |
|00003bd0| 73 69 7a 65 6f 66 28 54 | 4f 62 6a 65 63 74 42 6c |sizeof(T|ObjectBl|
|00003be0| 6f 63 6b 43 61 63 68 65 | 48 65 61 64 65 72 29 20 |ockCache|Header) |
|00003bf0| 2b 20 73 69 7a 65 6f 66 | 28 49 6e 74 36 34 29 29 |+ sizeof|(Int64))|
|00003c00| 3b 0d 09 09 7d 0d 0d 09 | 20 2a 20 28 49 6e 74 36 |;...}...| * (Int6|
|00003c10| 34 2a 29 20 28 20 28 28 | 50 74 72 29 20 62 6c 6f |4*) ( ((|Ptr) blo|
|00003c20| 63 6b 48 65 61 64 65 72 | 29 20 2b 20 6f 66 66 73 |ckHeader|) + offs|
|00003c30| 65 74 20 2b 20 73 69 7a | 65 6f 66 28 54 4f 62 6a |et + siz|eof(TObj|
|00003c40| 65 63 74 42 6c 6f 63 6b | 43 61 63 68 65 48 65 61 |ectBlock|CacheHea|
|00003c50| 64 65 72 29 29 20 3d 20 | 76 61 6c 75 65 3b 09 0d |der)) = |value;..|
|00003c60| 09 7d 20 2f 2f 20 54 4f | 62 6a 65 63 74 42 6c 6f |.} // TO|bjectBlo|
|00003c70| 63 6b 43 61 63 68 65 3a | 3a 53 65 74 20 0d 0d 2f |ckCache:|:Set ../|
|00003c80| 2f 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |/=======|========|
|00003c90| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003ca0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003cb0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003cc0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003cd0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 0d 2f 2f 20 43 4c 41 |========|=.// CLA|
|00003ce0| 53 53 20 54 4f 62 6a 65 | 63 74 50 72 6f 70 65 72 |SS TObje|ctProper|
|00003cf0| 74 79 43 61 63 68 65 0d | 2f 2f 3d 3d 3d 3d 3d 3d |tyCache.|//======|
|00003d00| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003d10| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003d20| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003d30| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003d40| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003d50| 3d 3d 0d 09 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |==...//-|--------|
|00003d60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003da0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|00003db0| 2f 2f 20 54 4f 62 6a 65 | 63 74 50 72 6f 70 65 72 |// TObje|ctProper|
|00003dc0| 74 79 43 61 63 68 65 3a | 3a 4c 6f 6f 6b 75 70 50 |tyCache:|:LookupP|
|00003dd0| 72 6f 70 65 72 74 79 3a | 20 0d 2f 2f 0d 2f 2f 20 |roperty:| .//.// |
|00003de0| 4c 6f 6f 6b 20 74 68 72 | 6f 75 67 68 20 74 68 65 |Look thr|ough the|
|00003df0| 20 6f 62 6a 65 63 74 20 | 63 61 63 68 65 20 74 6f | object |cache to|
|00003e00| 20 66 69 6e 64 20 74 68 | 65 20 73 70 65 63 69 66 | find th|e specif|
|00003e10| 69 65 64 20 70 72 6f 70 | 65 72 74 79 0d 2f 2f 0d |ied prop|erty.//.|
|00003e20| 2f 2f 20 4e 4f 54 45 3a | 20 49 74 20 77 6f 75 6c |// NOTE:| It woul|
|00003e30| 64 20 62 65 20 75 73 65 | 66 75 6c 20 74 6f 20 70 |d be use|ful to p|
|00003e40| 75 74 20 73 6f 6d 65 20 | 73 74 61 74 69 73 74 69 |ut some |statisti|
|00003e50| 63 73 20 67 61 74 68 65 | 72 65 72 20 69 6e 74 6f |cs gathe|rer into|
|00003e60| 20 74 68 69 73 20 72 6f | 75 74 69 6e 65 20 77 68 | this ro|utine wh|
|00003e70| 69 63 68 0d 2f 2f 09 20 | 20 20 20 20 66 69 67 75 |ich.//. | figu|
|00003e80| 72 65 73 20 6f 75 74 20 | 6f 6e 20 61 76 65 72 61 |res out |on avera|
|00003e90| 67 65 20 68 6f 77 20 6d | 61 6e 79 20 70 72 6f 70 |ge how m|any prop|
|00003ea0| 65 72 74 69 65 73 20 77 | 65 20 68 61 76 65 20 74 |erties w|e have t|
|00003eb0| 6f 20 77 61 6c 6b 20 74 | 68 72 6f 75 67 68 20 62 |o walk t|hrough b|
|00003ec0| 65 66 6f 72 65 0d 2f 2f | 09 20 20 20 20 20 77 65 |efore.//|. we|
|00003ed0| 20 66 69 6e 64 20 61 20 | 6d 61 74 63 68 2e 20 20 | find a |match. |
|00003ee0| 49 20 62 65 6c 69 65 76 | 65 20 74 68 61 74 20 77 |I believ|e that w|
|00003ef0| 65 20 64 6f 6e 27 74 20 | 75 73 75 61 6c 6c 79 20 |e don't |usually |
|00003f00| 68 61 76 65 20 74 6f 20 | 77 61 6c 6b 20 76 65 72 |have to |walk ver|
|00003f10| 79 20 66 61 72 2c 0d 2f | 2f 09 20 20 20 20 20 62 |y far,./|/. b|
|00003f20| 75 74 20 69 74 20 77 6f | 75 6c 64 20 62 65 20 61 |ut it wo|uld be a|
|00003f30| 20 75 73 65 66 75 6c 20 | 70 69 65 63 65 20 6f 66 | useful |piece of|
|00003f40| 20 64 61 74 61 20 74 6f | 20 61 63 71 75 69 72 65 | data to| acquire|
|00003f50| 2e 20 2d 61 6e 64 79 0d | 2f 2f 2d 2d 2d 2d 2d 2d |. -andy.|//------|
|00003f60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003f70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003f80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003f90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003fa0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003fb0| 2d 2d 0d 54 4f 62 6a 65 | 63 74 50 72 6f 70 65 72 |--.TObje|ctProper|
|00003fc0| 74 79 43 61 63 68 65 50 | 72 6f 70 65 72 74 79 2a |tyCacheP|roperty*|
|00003fd0| 20 54 4f 62 6a 65 63 74 | 50 72 6f 70 65 72 74 79 | TObject|Property|
|00003fe0| 43 61 63 68 65 3a 3a 4c | 6f 6f 6b 75 70 50 72 6f |Cache::L|ookupPro|
|00003ff0| 70 65 72 74 79 28 54 50 | 72 6f 70 65 72 74 79 20 |perty(TP|roperty |
|00004000| 70 72 6f 70 65 72 74 79 | 29 20 63 6f 6e 73 74 0d |property|) const.|
|00004010| 09 7b 0d 09 54 4f 62 6a | 65 63 74 50 72 6f 70 65 |.{..TObj|ectPrope|
|00004020| 72 74 79 43 61 63 68 65 | 50 72 6f 70 65 72 74 79 |rtyCache|Property|
|00004030| 2a 20 70 72 6f 70 20 09 | 3d 20 28 54 4f 62 6a 65 |* prop .|= (TObje|
|00004040| 63 74 50 72 6f 70 65 72 | 74 79 43 61 63 68 65 50 |ctProper|tyCacheP|
|00004050| 72 6f 70 65 72 74 79 2a | 29 20 50 72 6f 70 65 72 |roperty*|) Proper|
|00004060| 74 79 43 61 63 68 65 53 | 74 61 72 74 28 29 3b 0d |tyCacheS|tart();.|
|00004070| 09 54 4f 62 6a 65 63 74 | 50 72 6f 70 65 72 74 79 |.TObject|Property|
|00004080| 43 61 63 68 65 50 72 6f | 70 65 72 74 79 2a 20 65 |CachePro|perty* e|
|00004090| 6e 64 09 3d 20 28 54 4f | 62 6a 65 63 74 50 72 6f |nd.= (TO|bjectPro|
|000040a0| 70 65 72 74 79 43 61 63 | 68 65 50 72 6f 70 65 72 |pertyCac|heProper|
|000040b0| 74 79 2a 29 20 50 72 6f | 70 65 72 74 79 43 61 63 |ty*) Pro|pertyCac|
|000040c0| 68 65 45 6e 64 28 29 3b | 0d 0d 09 77 68 69 6c 65 |heEnd();|...while|
|000040d0| 20 28 70 72 6f 70 20 3c | 20 65 6e 64 29 0d 09 09 | (prop <| end)...|
|000040e0| 7b 0d 09 09 69 66 20 28 | 70 72 6f 70 2d 3e 66 50 |{...if (|prop->fP|
|000040f0| 72 6f 70 65 72 74 79 20 | 3d 3d 20 70 72 6f 70 65 |roperty |== prope|
|00004100| 72 74 79 29 0d 09 09 09 | 7b 0d 09 09 09 54 4f 62 |rty)....|{....TOb|
|00004110| 6a 65 63 74 50 72 6f 70 | 65 72 74 79 43 61 63 68 |jectProp|ertyCach|
|00004120| 65 48 65 61 64 65 72 2a | 20 70 72 6f 70 65 72 74 |eHeader*| propert|
|00004130| 79 48 65 61 64 65 72 20 | 3d 20 50 72 6f 70 65 72 |yHeader |= Proper|
|00004140| 74 79 43 61 63 68 65 44 | 61 74 61 50 74 72 28 29 |tyCacheD|ataPtr()|
|00004150| 3b 0d 09 09 09 0d 09 09 | 09 70 72 6f 70 65 72 74 |;.......|.propert|
|00004160| 79 48 65 61 64 65 72 2d | 3e 66 4c 61 73 74 50 72 |yHeader-|>fLastPr|
|00004170| 6f 70 65 72 74 79 20 09 | 20 3d 20 70 72 6f 70 65 |operty .| = prope|
|00004180| 72 74 79 3b 0d 09 09 09 | 70 72 6f 70 65 72 74 79 |rty;....|property|
|00004190| 48 65 61 64 65 72 2d 3e | 66 4c 61 73 74 50 72 6f |Header->|fLastPro|
|000041a0| 70 65 72 74 79 50 74 72 | 20 3d 20 70 72 6f 70 3b |pertyPtr| = prop;|
|000041b0| 0d 09 09 09 20 0d 09 09 | 09 72 65 74 75 72 6e 20 |.... ...|.return |
|000041c0| 70 72 6f 70 3b 0d 09 09 | 09 7d 0d 09 09 09 09 0d |prop;...|.}......|
|000041d0| 09 09 70 72 6f 70 20 3d | 20 4e 65 78 74 50 72 6f |..prop =| NextPro|
|000041e0| 70 65 72 74 79 28 70 72 | 6f 70 29 3b 0d 09 09 7d |perty(pr|op);...}|
|000041f0| 0d 09 09 0d 09 72 65 74 | 75 72 6e 20 6e 69 6c 3b |.....ret|urn nil;|
|00004200| 0d 09 7d 20 2f 2f 20 54 | 4f 62 6a 65 63 74 50 72 |..} // T|ObjectPr|
|00004210| 6f 70 65 72 74 79 43 61 | 63 68 65 3a 3a 4c 6f 6f |opertyCa|che::Loo|
|00004220| 6b 75 70 50 72 6f 70 65 | 72 74 79 20 0d 0d 2f 2f |kupPrope|rty ..//|
|00004230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004280| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 4f 62 6a |--------|.// TObj|
|00004290| 65 63 74 50 72 6f 70 65 | 72 74 79 43 61 63 68 65 |ectPrope|rtyCache|
|000042a0| 3a 3a 49 6e 76 61 6c 41 | 6c 6c 57 69 64 74 68 73 |::InvalA|llWidths|
|000042b0| 3a 20 0d 2f 2f 0d 2f 2f | 20 4d 61 6b 65 20 61 6c |: .//.//| Make al|
|000042c0| 6c 20 74 68 65 20 77 69 | 64 74 68 73 20 69 6e 20 |l the wi|dths in |
|000042d0| 74 68 69 73 20 63 61 63 | 68 65 20 69 6e 76 61 6c |this cac|he inval|
|000042e0| 69 64 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |id.//---|--------|
|000042f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004310| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004320| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004330| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 76 6f |--------|-----.vo|
|00004340| 69 64 20 54 4f 62 6a 65 | 63 74 50 72 6f 70 65 72 |id TObje|ctProper|
|00004350| 74 79 43 61 63 68 65 3a | 3a 49 6e 76 61 6c 41 6c |tyCache:|:InvalAl|
|00004360| 6c 57 69 64 74 68 73 28 | 29 20 63 6f 6e 73 74 0d |lWidths(|) const.|
|00004370| 09 7b 0d 09 54 4f 62 6a | 65 63 74 50 72 6f 70 65 |.{..TObj|ectPrope|
|00004380| 72 74 79 43 61 63 68 65 | 50 72 6f 70 65 72 74 79 |rtyCache|Property|
|00004390| 2a 20 70 72 6f 70 20 09 | 3d 20 28 54 4f 62 6a 65 |* prop .|= (TObje|
|000043a0| 63 74 50 72 6f 70 65 72 | 74 79 43 61 63 68 65 50 |ctProper|tyCacheP|
|000043b0| 72 6f 70 65 72 74 79 2a | 29 20 50 72 6f 70 65 72 |roperty*|) Proper|
|000043c0| 74 79 43 61 63 68 65 53 | 74 61 72 74 28 29 3b 0d |tyCacheS|tart();.|
|000043d0| 09 54 4f 62 6a 65 63 74 | 50 72 6f 70 65 72 74 79 |.TObject|Property|
|000043e0| 43 61 63 68 65 50 72 6f | 70 65 72 74 79 2a 20 65 |CachePro|perty* e|
|000043f0| 6e 64 09 3d 20 28 54 4f | 62 6a 65 63 74 50 72 6f |nd.= (TO|bjectPro|
|00004400| 70 65 72 74 79 43 61 63 | 68 65 50 72 6f 70 65 72 |pertyCac|heProper|
|00004410| 74 79 2a 29 20 50 72 6f | 70 65 72 74 79 43 61 63 |ty*) Pro|pertyCac|
|00004420| 68 65 45 6e 64 28 29 3b | 0d 09 0d 09 69 66 20 28 |heEnd();|....if (|
|00004430| 20 28 70 72 6f 70 20 3d | 3d 20 6e 69 6c 29 20 7c | (prop =|= nil) ||
|00004440| 7c 20 28 65 6e 64 20 3d | 3d 20 6e 69 6c 29 20 29 || (end =|= nil) )|
|00004450| 0d 09 09 72 65 74 75 72 | 6e 3b 0d 0d 09 77 68 69 |...retur|n;...whi|
|00004460| 6c 65 20 28 70 72 6f 70 | 20 3c 20 65 6e 64 29 0d |le (prop| < end).|
|00004470| 09 09 7b 0d 09 09 70 72 | 6f 70 2d 3e 66 57 69 64 |..{...pr|op->fWid|
|00004480| 74 68 20 3d 20 6b 49 6e | 76 61 6c 69 64 43 61 63 |th = kIn|validCac|
|00004490| 68 65 57 69 64 74 68 3b | 0d 09 09 70 72 6f 70 20 |heWidth;|...prop |
|000044a0| 3d 20 4e 65 78 74 50 72 | 6f 70 65 72 74 79 28 70 |= NextPr|operty(p|
|000044b0| 72 6f 70 29 3b 0d 09 09 | 7d 0d 09 09 0d 09 72 65 |rop);...|}.....re|
|000044c0| 74 75 72 6e 3b 0d 09 7d | 20 2f 2f 20 54 4f 62 6a |turn;..}| // TObj|
|000044d0| 65 63 74 50 72 6f 70 65 | 72 74 79 43 61 63 68 65 |ectPrope|rtyCache|
|000044e0| 3a 3a 49 6e 76 61 6c 41 | 6c 6c 57 69 64 74 68 73 |::InvalA|llWidths|
|000044f0| 20 0d 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d | ...//--|--------|
|00004500| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004510| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004520| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004530| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004540| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 2f |--------|------./|
|00004550| 2f 20 54 4f 62 6a 65 63 | 74 50 72 6f 70 65 72 74 |/ TObjec|tPropert|
|00004560| 79 43 61 63 68 65 3a 3a | 41 64 64 50 72 6f 70 65 |yCache::|AddPrope|
|00004570| 72 74 79 3a 0d 2f 2f 0d | 2f 2f 20 64 61 74 61 53 |rty:.//.|// dataS|
|00004580| 69 7a 65 20 69 73 20 61 | 6c 6c 6f 77 65 64 20 74 |ize is a|llowed t|
|00004590| 6f 20 62 65 20 7a 65 72 | 6f 2e 20 20 54 68 61 74 |o be zer|o. That|
|000045a0| 20 6b 69 6e 64 61 20 73 | 75 63 6b 73 2c 20 6d 6f | kinda s|ucks, mo|
|000045b0| 64 65 6c 2d 77 69 73 65 | 2e 20 0d 2f 2f 2d 2d 2d |del-wise|. .//---|
|000045c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000045d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000045e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000045f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004600| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004610| 2d 2d 2d 2d 2d 0d 76 6f | 69 64 20 54 4f 62 6a 65 |-----.vo|id TObje|
|00004620| 63 74 50 72 6f 70 65 72 | 74 79 43 61 63 68 65 3a |ctProper|tyCache:|
|00004630| 3a 41 64 64 50 72 6f 70 | 65 72 74 79 28 54 50 72 |:AddProp|erty(TPr|
|00004640| 6f 70 65 72 74 79 20 70 | 72 6f 70 65 72 74 79 2c |operty p|roperty,|
|00004650| 20 50 74 72 20 73 6f 75 | 72 63 65 44 61 74 61 50 | Ptr sou|rceDataP|
|00004660| 74 72 2c 20 55 49 6e 74 | 38 20 64 61 74 61 53 69 |tr, UInt|8 dataSi|
|00004670| 7a 65 29 0d 09 7b 0d 09 | 54 4f 62 6a 65 63 74 50 |ze)..{..|TObjectP|
|00004680| 72 6f 70 65 72 74 79 43 | 61 63 68 65 48 65 61 64 |ropertyC|acheHead|
|00004690| 65 72 2a 20 70 72 6f 70 | 65 72 74 79 43 61 63 68 |er* prop|ertyCach|
|000046a0| 65 48 65 61 64 65 72 20 | 3d 20 50 72 6f 70 65 72 |eHeader |= Proper|
|000046b0| 74 79 43 61 63 68 65 44 | 61 74 61 50 74 72 28 29 |tyCacheD|ataPtr()|
|000046c0| 3b 0d 0d 09 2f 2f 0d 09 | 2f 2f 20 41 6c 6c 20 70 |;...//..|// All p|
|000046d0| 72 6f 70 65 72 74 69 65 | 73 20 61 72 65 20 77 6f |ropertie|s are wo|
|000046e0| 72 64 2d 61 6c 69 67 6e | 65 64 20 0d 09 2f 2f 20 |rd-align|ed ..// |
|000046f0| a5 a5 a5 20 09 28 73 68 | 6f 75 6c 64 20 74 68 65 |... .(sh|ould the|
|00004700| 79 20 62 65 20 6c 6f 6e | 67 2d 61 6c 69 67 6e 65 |y be lon|g-aligne|
|00004710| 64 20 6f 6e 20 50 6f 77 | 65 72 50 43 3f 29 0d 09 |d on Pow|erPC?)..|
|00004720| 2f 2f 09 20 20 20 09 6d | 79 20 74 68 6f 75 67 68 |//. .m|y though|
|00004730| 74 73 20 6f 6e 20 74 68 | 69 73 20 61 72 65 3a 20 |ts on th|is are: |
|00004740| 70 72 6f 62 61 62 6c 79 | 20 79 65 73 20 73 69 6e |probably| yes sin|
|00004750| 63 65 20 77 65 20 73 68 | 6f 75 6c 64 20 74 72 79 |ce we sh|ould try|
|00004760| 20 72 65 61 6c 6c 79 20 | 68 61 72 64 20 74 6f 20 | really |hard to |
|00004770| 6b 65 65 70 0d 09 2f 2f | 09 09 65 76 65 72 79 74 |keep..//|..everyt|
|00004780| 68 69 6e 67 20 6c 6f 6e | 67 2d 61 6c 69 67 6e 65 |hing lon|g-aligne|
|00004790| 64 20 6f 6e 20 50 6f 77 | 65 72 50 43 20 2d 61 6e |d on Pow|erPC -an|
|000047a0| 64 79 09 0d 09 2f 2f 0d | 09 55 49 6e 74 33 32 20 |dy...//.|.UInt32 |
|000047b0| 74 68 69 73 50 72 6f 70 | 65 72 74 79 53 69 7a 65 |thisProp|ertySize|
|000047c0| 20 3d 20 28 55 49 6e 74 | 33 32 29 20 57 6f 72 64 | = (UInt|32) Word|
|000047d0| 41 6c 69 67 6e 28 20 28 | 76 6f 69 64 2a 29 20 28 |Align( (|void*) (|
|000047e0| 64 61 74 61 53 69 7a 65 | 20 2b 20 73 69 7a 65 6f |dataSize| + sizeo|
|000047f0| 66 28 54 4f 62 6a 65 63 | 74 50 72 6f 70 65 72 74 |f(TObjec|tPropert|
|00004800| 79 43 61 63 68 65 50 72 | 6f 70 65 72 74 79 29 29 |yCachePr|operty))|
|00004810| 20 29 3b 0d 0d 09 2f 2f | 0d 09 2f 2f 20 49 66 20 | );...//|..// If |
|00004820| 74 68 65 72 65 20 69 73 | 20 6e 6f 20 6f 62 6a 65 |there is| no obje|
|00004830| 63 74 20 63 61 63 68 65 | 2c 20 6d 61 6b 65 20 6f |ct cache|, make o|
|00004840| 6e 65 20 6c 61 72 67 65 | 20 65 6e 6f 75 67 68 20 |ne large| enough |
|00004850| 74 6f 20 68 6f 6c 64 20 | 74 68 69 73 0d 09 2f 2f |to hold |this..//|
|00004860| 20 70 72 6f 70 65 72 74 | 79 20 61 6e 64 20 69 74 | propert|y and it|
|00004870| 73 20 64 61 74 61 2e 0d | 09 2f 2f 0d 09 2f 2f 20 |s data..|.//..// |
|00004880| 4f 74 68 65 72 77 69 73 | 65 2c 20 61 20 63 61 63 |Otherwis|e, a cac|
|00004890| 68 65 20 61 6c 72 65 61 | 64 79 20 65 78 69 73 74 |he alrea|dy exist|
|000048a0| 65 64 2c 20 73 6f 20 61 | 6c 6c 6f 63 61 74 65 20 |ed, so a|llocate |
|000048b0| 65 6e 6f 75 67 68 20 73 | 70 61 63 65 20 74 6f 0d |enough s|pace to.|
|000048c0| 09 2f 2f 20 20 68 6f 6c | 64 20 74 68 65 20 64 61 |.// hol|d the da|
|000048d0| 74 61 20 61 6c 72 65 61 | 64 79 20 62 65 69 6e 67 |ta alrea|dy being|
|000048e0| 20 75 73 65 64 20 69 6e | 20 74 68 65 20 63 61 63 | used in| the cac|
|000048f0| 68 65 20 61 6e 64 20 74 | 68 69 73 20 70 72 6f 70 |he and t|his prop|
|00004900| 65 72 74 79 0d 09 2f 2f | 20 20 61 6e 64 20 69 74 |erty..//| and it|
|00004910| 73 20 64 61 74 61 2e 0d | 09 2f 2f 0d 09 69 66 20 |s data..|.//..if |
|00004920| 28 21 70 72 6f 70 65 72 | 74 79 43 61 63 68 65 48 |(!proper|tyCacheH|
|00004930| 65 61 64 65 72 29 0d 09 | 09 70 72 6f 70 65 72 74 |eader)..|.propert|
|00004940| 79 43 61 63 68 65 48 65 | 61 64 65 72 20 3d 20 28 |yCacheHe|ader = (|
|00004950| 54 4f 62 6a 65 63 74 50 | 72 6f 70 65 72 74 79 43 |TObjectP|ropertyC|
|00004960| 61 63 68 65 48 65 61 64 | 65 72 2a 29 20 41 6c 6c |acheHead|er*) All|
|00004970| 6f 63 61 74 65 28 74 68 | 69 73 50 72 6f 70 65 72 |ocate(th|isProper|
|00004980| 74 79 53 69 7a 65 20 2b | 20 73 69 7a 65 6f 66 28 |tySize +| sizeof(|
|00004990| 54 4f 62 6a 65 63 74 50 | 72 6f 70 65 72 74 79 43 |TObjectP|ropertyC|
|000049a0| 61 63 68 65 48 65 61 64 | 65 72 29 20 29 3b 0d 09 |acheHead|er) );..|
|000049b0| 65 6c 73 65 0d 09 09 70 | 72 6f 70 65 72 74 79 43 |else...p|ropertyC|
|000049c0| 61 63 68 65 48 65 61 64 | 65 72 20 3d 20 28 54 4f |acheHead|er = (TO|
|000049d0| 62 6a 65 63 74 50 72 6f | 70 65 72 74 79 43 61 63 |bjectPro|pertyCac|
|000049e0| 68 65 48 65 61 64 65 72 | 2a 29 20 41 6c 6c 6f 63 |heHeader|*) Alloc|
|000049f0| 61 74 65 28 70 72 6f 70 | 65 72 74 79 43 61 63 68 |ate(prop|ertyCach|
|00004a00| 65 48 65 61 64 65 72 2d | 3e 66 4f 62 6a 65 63 74 |eHeader-|>fObject|
|00004a10| 43 61 63 68 65 48 65 61 | 64 65 72 2e 66 55 73 65 |CacheHea|der.fUse|
|00004a20| 64 20 2b 20 74 68 69 73 | 50 72 6f 70 65 72 74 79 |d + this|Property|
|00004a30| 53 69 7a 65 29 3b 0d 0d | 09 2f 2f 0d 09 2f 2f 20 |Size);..|.//..// |
|00004a40| 54 68 65 20 70 6f 69 6e | 74 65 72 20 74 6f 20 74 |The poin|ter to t|
|00004a50| 68 65 20 70 72 6f 70 65 | 72 74 79 43 61 63 68 65 |he prope|rtyCache|
|00004a60| 48 65 61 64 65 72 20 73 | 68 6f 75 6c 64 20 2d 6e |Header s|hould -n|
|00004a70| 65 76 65 72 2d 20 62 65 | 20 6e 69 6c 20 6f 72 20 |ever- be| nil or |
|00004a80| 79 6f 75 27 6c 6c 20 64 | 69 65 20 73 6f 6f 6e 20 |you'll d|ie soon |
|00004a90| 61 66 74 65 72 77 61 72 | 64 73 2e 0d 09 2f 2f 0d |afterwar|ds...//.|
|00004aa0| 09 41 53 53 45 52 54 28 | 70 72 6f 70 65 72 74 79 |.ASSERT(|property|
|00004ab0| 43 61 63 68 65 48 65 61 | 64 65 72 20 21 3d 20 6e |CacheHea|der != n|
|00004ac0| 69 6c 29 3b 0d 09 09 0d | 09 2f 2f 0d 09 2f 2f 20 |il);....|.//..// |
|00004ad0| 50 6f 69 6e 74 20 74 6f | 20 74 68 65 20 6e 65 77 |Point to| the new|
|00004ae0| 20 70 72 6f 70 65 72 74 | 79 27 73 20 73 70 6f 74 | propert|y's spot|
|00004af0| 0d 09 2f 2f 0d 09 2f 2f | 20 41 74 20 74 68 69 73 |..//..//| At this|
|00004b00| 20 70 6f 69 6e 74 20 77 | 65 20 68 61 76 65 20 61 | point w|e have a|
|00004b10| 6c 72 65 61 64 79 20 63 | 6c 61 69 6d 65 64 20 65 |lready c|laimed e|
|00004b20| 6e 6f 75 67 68 20 73 70 | 61 63 65 20 77 69 74 68 |nough sp|ace with|
|00004b30| 69 6e 20 74 68 65 20 6f | 62 6a 65 63 74 20 63 61 |in the o|bject ca|
|00004b40| 63 68 65 20 74 6f 0d 09 | 2f 2f 20 68 6f 6c 64 20 |che to..|// hold |
|00004b50| 74 68 69 73 20 70 72 6f | 70 65 72 74 79 20 61 6e |this pro|perty an|
|00004b60| 64 20 69 74 73 20 64 61 | 74 61 2c 20 73 6f 20 77 |d its da|ta, so w|
|00004b70| 65 20 6e 65 65 64 20 74 | 6f 20 73 6b 69 70 20 74 |e need t|o skip t|
|00004b80| 6f 20 74 68 65 20 65 6e | 64 20 6f 66 20 74 68 65 |o the en|d of the|
|00004b90| 20 75 73 65 64 0d 09 2f | 2f 20 64 61 74 61 20 74 | used../|/ data t|
|00004ba0| 68 65 6e 20 62 61 63 6b | 75 70 20 74 68 65 20 73 |hen back|up the s|
|00004bb0| 69 7a 65 20 6f 66 20 74 | 68 65 20 70 72 6f 70 65 |ize of t|he prope|
|00004bc0| 72 74 79 20 77 68 69 63 | 68 20 77 65 27 72 65 20 |rty whic|h we're |
|00004bd0| 61 64 64 69 6e 67 20 28 | 74 6f 20 74 68 65 20 65 |adding (|to the e|
|00004be0| 6e 64 29 0d 09 2f 2f 0d | 09 54 4f 62 6a 65 63 74 |nd)..//.|.TObject|
|00004bf0| 50 72 6f 70 65 72 74 79 | 43 61 63 68 65 50 72 6f |Property|CachePro|
|00004c00| 70 65 72 74 79 2a 20 6e | 65 77 50 72 6f 70 20 3d |perty* n|ewProp =|
|00004c10| 20 28 54 4f 62 6a 65 63 | 74 50 72 6f 70 65 72 74 | (TObjec|tPropert|
|00004c20| 79 43 61 63 68 65 50 72 | 6f 70 65 72 74 79 2a 29 |yCachePr|operty*)|
|00004c30| 20 0d 09 09 28 20 28 28 | 50 74 72 29 20 70 72 6f | ...( ((|Ptr) pro|
|00004c40| 70 65 72 74 79 43 61 63 | 68 65 48 65 61 64 65 72 |pertyCac|heHeader|
|00004c50| 29 20 2b 20 70 72 6f 70 | 65 72 74 79 43 61 63 68 |) + prop|ertyCach|
|00004c60| 65 48 65 61 64 65 72 2d | 3e 66 4f 62 6a 65 63 74 |eHeader-|>fObject|
|00004c70| 43 61 63 68 65 48 65 61 | 64 65 72 2e 66 55 73 65 |CacheHea|der.fUse|
|00004c80| 64 20 2d 20 74 68 69 73 | 50 72 6f 70 65 72 74 79 |d - this|Property|
|00004c90| 53 69 7a 65 29 3b 0d 0d | 09 2f 2f 0d 09 2f 2f 20 |Size);..|.//..// |
|00004ca0| 55 70 64 61 74 65 20 74 | 68 65 20 70 72 6f 70 65 |Update t|he prope|
|00004cb0| 72 74 79 20 66 69 65 6c | 64 73 20 77 69 74 68 69 |rty fiel|ds withi|
|00004cc0| 6e 20 74 68 65 20 63 61 | 63 68 65 0d 09 2f 2f 0d |n the ca|che..//.|
|00004cd0| 09 6e 65 77 50 72 6f 70 | 2d 3e 66 50 72 6f 70 65 |.newProp|->fPrope|
|00004ce0| 72 74 79 20 09 09 3d 20 | 70 72 6f 70 65 72 74 79 |rty ..= |property|
|00004cf0| 3b 0d 09 6e 65 77 50 72 | 6f 70 2d 3e 66 49 73 56 |;..newPr|op->fIsV|
|00004d00| 61 6c 69 64 09 09 3d 20 | 74 72 75 65 3b 0d 09 6e |alid..= |true;..n|
|00004d10| 65 77 50 72 6f 70 2d 3e | 66 57 69 64 74 68 09 09 |ewProp->|fWidth..|
|00004d20| 09 3d 20 6b 49 6e 76 61 | 6c 69 64 43 61 63 68 65 |.= kInva|lidCache|
|00004d30| 57 69 64 74 68 3b 0d 09 | 6e 65 77 50 72 6f 70 2d |Width;..|newProp-|
|00004d40| 3e 66 53 74 72 69 6e 67 | 53 69 7a 65 09 3d 20 64 |>fString|Size.= d|
|00004d50| 61 74 61 53 69 7a 65 3b | 0d 09 0d 09 2f 2f 0d 09 |ataSize;|....//..|
|00004d60| 2f 2f 20 4d 6f 76 65 20 | 74 68 65 20 64 61 74 61 |// Move |the data|
|00004d70| 20 69 6e 74 6f 20 70 6c | 61 63 65 0d 09 2f 2f 0d | into pl|ace..//.|
|00004d80| 09 50 74 72 20 64 65 73 | 74 69 6e 61 74 69 6f 6e |.Ptr des|tination|
|00004d90| 44 61 74 61 50 74 72 20 | 09 09 3d 20 28 50 74 72 |DataPtr |..= (Ptr|
|00004da0| 29 20 6e 65 77 50 72 6f | 70 20 2b 20 73 69 7a 65 |) newPro|p + size|
|00004db0| 6f 66 28 54 4f 62 6a 65 | 63 74 50 72 6f 70 65 72 |of(TObje|ctProper|
|00004dc0| 74 79 43 61 63 68 65 50 | 72 6f 70 65 72 74 79 29 |tyCacheP|roperty)|
|00004dd0| 3b 0d 09 55 49 6e 74 33 | 32 20 77 6f 72 64 41 6c |;..UInt3|2 wordAl|
|00004de0| 69 67 6e 65 64 44 61 74 | 61 53 69 7a 65 20 09 3d |ignedDat|aSize .=|
|00004df0| 20 28 55 49 6e 74 33 32 | 29 20 57 6f 72 64 41 6c | (UInt32|) WordAl|
|00004e00| 69 67 6e 28 20 28 76 6f | 69 64 2a 29 20 64 61 74 |ign( (vo|id*) dat|
|00004e10| 61 53 69 7a 65 29 3b 0d | 09 0d 09 73 77 69 74 63 |aSize);.|...switc|
|00004e20| 68 28 77 6f 72 64 41 6c | 69 67 6e 65 64 44 61 74 |h(wordAl|ignedDat|
|00004e30| 61 53 69 7a 65 29 0d 09 | 09 7b 0d 09 09 63 61 73 |aSize)..|.{...cas|
|00004e40| 65 20 30 3a 0d 09 09 09 | 62 72 65 61 6b 3b 0d 0d |e 0:....|break;..|
|00004e50| 09 09 63 61 73 65 20 32 | 3a 0d 09 09 09 2a 20 28 |..case 2|:....* (|
|00004e60| 55 49 6e 74 31 36 2a 29 | 20 64 65 73 74 69 6e 61 |UInt16*)| destina|
|00004e70| 74 69 6f 6e 44 61 74 61 | 50 74 72 20 3d 20 2a 20 |tionData|Ptr = * |
|00004e80| 28 55 49 6e 74 31 36 2a | 29 20 73 6f 75 72 63 65 |(UInt16*|) source|
|00004e90| 44 61 74 61 50 74 72 3b | 0d 09 09 09 62 72 65 61 |DataPtr;|....brea|
|00004ea0| 6b 3b 0d 09 09 09 0d 09 | 09 63 61 73 65 20 34 3a |k;......|.case 4:|
|00004eb0| 0d 09 09 09 2a 20 28 55 | 49 6e 74 33 32 2a 29 20 |....* (U|Int32*) |
|00004ec0| 64 65 73 74 69 6e 61 74 | 69 6f 6e 44 61 74 61 50 |destinat|ionDataP|
|00004ed0| 74 72 20 3d 20 2a 20 28 | 55 49 6e 74 33 32 2a 29 |tr = * (|UInt32*)|
|00004ee0| 20 73 6f 75 72 63 65 44 | 61 74 61 50 74 72 3b 0d | sourceD|ataPtr;.|
|00004ef0| 09 09 09 62 72 65 61 6b | 3b 0d 0d 09 09 63 61 73 |...break|;....cas|
|00004f00| 65 20 38 3a 0d 09 09 09 | 2a 20 28 55 49 6e 74 33 |e 8:....|* (UInt3|
|00004f10| 32 2a 29 20 20 64 65 73 | 74 69 6e 61 74 69 6f 6e |2*) des|tination|
|00004f20| 44 61 74 61 50 74 72 20 | 09 20 3d 20 2a 20 28 55 |DataPtr |. = * (U|
|00004f30| 49 6e 74 33 32 2a 29 20 | 20 73 6f 75 72 63 65 44 |Int32*) | sourceD|
|00004f40| 61 74 61 50 74 72 3b 0d | 09 09 09 2a 20 28 55 49 |ataPtr;.|...* (UI|
|00004f50| 6e 74 33 32 2a 29 20 28 | 64 65 73 74 69 6e 61 74 |nt32*) (|destinat|
|00004f60| 69 6f 6e 44 61 74 61 50 | 74 72 20 2b 20 34 29 20 |ionDataP|tr + 4) |
|00004f70| 3d 20 2a 20 28 55 49 6e | 74 33 32 2a 29 20 28 73 |= * (UIn|t32*) (s|
|00004f80| 6f 75 72 63 65 44 61 74 | 61 50 74 72 20 2b 20 34 |ourceDat|aPtr + 4|
|00004f90| 29 3b 0d 09 09 09 62 72 | 65 61 6b 3b 0d 09 09 0d |);....br|eak;....|
|00004fa0| 09 09 2f 2f 0d 09 09 2f | 2f 20 46 6f 72 20 74 68 |..//.../|/ For th|
|00004fb0| 65 20 6d 6f 73 74 20 70 | 61 72 74 2c 20 63 61 6c |e most p|art, cal|
|00004fc0| 6c 69 6e 67 20 42 6c 6f | 63 6b 4d 6f 76 65 44 61 |ling Blo|ckMoveDa|
|00004fd0| 74 61 20 74 6f 20 63 6f | 70 79 20 74 68 69 73 20 |ta to co|py this |
|00004fe0| 69 73 20 64 75 6d 62 20 | 62 65 63 61 75 73 65 0d |is dumb |because.|
|00004ff0| 09 09 2f 2f 20 6d 6f 73 | 74 20 6f 66 20 74 68 65 |..// mos|t of the|
|00005000| 20 73 74 72 69 6e 67 73 | 20 77 65 20 63 6f 70 79 | strings| we copy|
|00005010| 20 77 69 6c 6c 20 62 65 | 20 2d 72 65 61 6c 6c 79 | will be| -really|
|00005020| 2d 20 73 68 6f 72 74 2e | 0d 09 09 2f 2f 0d 09 09 |- short.|...//...|
|00005030| 64 65 66 61 75 6c 74 3a | 0d 09 09 09 42 6c 6f 63 |default:|....Bloc|
|00005040| 6b 4d 6f 76 65 44 61 74 | 61 28 73 6f 75 72 63 65 |kMoveDat|a(source|
|00005050| 44 61 74 61 50 74 72 2c | 20 64 65 73 74 69 6e 61 |DataPtr,| destina|
|00005060| 74 69 6f 6e 44 61 74 61 | 50 74 72 2c 20 77 6f 72 |tionData|Ptr, wor|
|00005070| 64 41 6c 69 67 6e 65 64 | 44 61 74 61 53 69 7a 65 |dAligned|DataSize|
|00005080| 29 3b 0d 09 09 09 62 72 | 65 61 6b 3b 0d 09 09 7d |);....br|eak;...}|
|00005090| 0d 09 0d 09 2f 2f 0d 09 | 2f 2f 20 55 70 64 61 74 |....//..|// Updat|
|000050a0| 65 20 74 68 65 20 63 61 | 63 68 65 27 73 20 22 4c |e the ca|che's "L|
|000050b0| 61 73 74 20 55 73 65 64 | 22 20 70 72 6f 70 65 72 |ast Used|" proper|
|000050c0| 74 79 20 63 61 63 68 65 | 20 66 6f 72 20 74 68 69 |ty cache| for thi|
|000050d0| 73 20 63 61 63 68 65 0d | 09 2f 2f 0d 09 70 72 6f |s cache.|.//..pro|
|000050e0| 70 65 72 74 79 43 61 63 | 68 65 48 65 61 64 65 72 |pertyCac|heHeader|
|000050f0| 2d 3e 66 4c 61 73 74 50 | 72 6f 70 65 72 74 79 20 |->fLastP|roperty |
|00005100| 09 09 3d 20 70 72 6f 70 | 65 72 74 79 3b 0d 09 70 |..= prop|erty;..p|
|00005110| 72 6f 70 65 72 74 79 43 | 61 63 68 65 48 65 61 64 |ropertyC|acheHead|
|00005120| 65 72 2d 3e 66 4c 61 73 | 74 50 72 6f 70 65 72 74 |er->fLas|tPropert|
|00005130| 79 50 74 72 20 09 3d 20 | 6e 65 77 50 72 6f 70 3b |yPtr .= |newProp;|
|00005140| 0d 09 7d 20 2f 2f 20 54 | 4f 62 6a 65 63 74 50 72 |..} // T|ObjectPr|
|00005150| 6f 70 65 72 74 79 43 61 | 63 68 65 3a 3a 41 64 64 |opertyCa|che::Add|
|00005160| 50 72 6f 70 65 72 74 79 | 20 0d 0d 2f 2f 2d 2d 2d |Property| ..//---|
|00005170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000051a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000051b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000051c0| 2d 2d 2d 2d 2d 0d 2f 2f | 20 54 4f 62 6a 65 63 74 |-----.//| TObject|
|000051d0| 50 72 6f 70 65 72 74 79 | 43 61 63 68 65 3a 3a 52 |Property|Cache::R|
|000051e0| 65 6d 6f 76 65 50 72 6f | 70 65 72 74 79 3a 20 0d |emovePro|perty: .|
|000051f0| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00005200| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 76 6f 69 64 20 |--------|--.void |
|00005250| 54 4f 62 6a 65 63 74 50 | 72 6f 70 65 72 74 79 43 |TObjectP|ropertyC|
|00005260| 61 63 68 65 3a 3a 52 65 | 6d 6f 76 65 50 72 6f 70 |ache::Re|moveProp|
|00005270| 65 72 74 79 28 54 50 72 | 6f 70 65 72 74 79 20 70 |erty(TPr|operty p|
|00005280| 72 6f 70 65 72 74 79 29 | 0d 09 7b 0d 09 54 4f 62 |roperty)|..{..TOb|
|00005290| 6a 65 63 74 50 72 6f 70 | 65 72 74 79 43 61 63 68 |jectProp|ertyCach|
|000052a0| 65 48 65 61 64 65 72 2a | 20 70 72 6f 70 65 72 74 |eHeader*| propert|
|000052b0| 79 43 61 63 68 65 48 65 | 61 64 65 72 20 3d 20 50 |yCacheHe|ader = P|
|000052c0| 72 6f 70 65 72 74 79 43 | 61 63 68 65 44 61 74 61 |ropertyC|acheData|
|000052d0| 50 74 72 28 29 3b 0d 0d | 09 69 66 20 28 70 72 6f |Ptr();..|.if (pro|
|000052e0| 70 65 72 74 79 43 61 63 | 68 65 48 65 61 64 65 72 |pertyCac|heHeader|
|000052f0| 29 0d 09 09 7b 0d 09 09 | 54 4f 62 6a 65 63 74 50 |)...{...|TObjectP|
|00005300| 72 6f 70 65 72 74 79 43 | 61 63 68 65 50 72 6f 70 |ropertyC|acheProp|
|00005310| 65 72 74 79 2a 20 70 72 | 6f 70 20 3d 20 4c 6f 6f |erty* pr|op = Loo|
|00005320| 6b 75 70 50 72 6f 70 65 | 72 74 79 46 61 73 74 28 |kupPrope|rtyFast(|
|00005330| 70 72 6f 70 65 72 74 79 | 29 3b 0d 09 0d 09 09 69 |property|);.....i|
|00005340| 66 20 28 21 70 72 6f 70 | 29 0d 09 09 09 70 72 6f |f (!prop|)....pro|
|00005350| 70 20 3d 20 4c 6f 6f 6b | 75 70 50 72 6f 70 65 72 |p = Look|upProper|
|00005360| 74 79 28 70 72 6f 70 65 | 72 74 79 29 3b 0d 09 0d |ty(prope|rty);...|
|00005370| 09 09 69 66 20 28 70 72 | 6f 70 29 0d 09 09 09 7b |..if (pr|op)....{|
|00005380| 0d 09 09 09 50 74 72 20 | 6e 65 78 74 09 3d 20 28 |....Ptr |next.= (|
|00005390| 50 74 72 29 20 4e 65 78 | 74 50 72 6f 70 65 72 74 |Ptr) Nex|tPropert|
|000053a0| 79 28 70 72 6f 70 29 3b | 0d 09 09 09 50 74 72 20 |y(prop);|....Ptr |
|000053b0| 65 6e 64 20 09 3d 20 20 | 50 72 6f 70 65 72 74 79 |end .= |Property|
|000053c0| 43 61 63 68 65 45 6e 64 | 28 29 3b 0d 09 0d 09 09 |CacheEnd|();.....|
|000053d0| 09 2f 2f 0d 09 09 09 2f | 2f 20 53 68 75 66 66 6c |.//..../|/ Shuffl|
|000053e0| 65 20 61 6c 6c 20 74 68 | 65 20 6f 74 68 65 72 20 |e all th|e other |
|000053f0| 62 6c 6f 63 6b 73 20 55 | 50 20 69 6e 20 74 68 65 |blocks U|P in the|
|00005400| 20 63 61 63 68 65 20 6f | 76 65 72 20 74 6f 70 20 | cache o|ver top |
|00005410| 6f 66 20 74 68 65 0d 09 | 09 09 2f 2f 20 70 72 6f |of the..|..// pro|
|00005420| 70 65 72 74 79 20 77 65 | 20 6a 75 73 74 20 6b 69 |perty we| just ki|
|00005430| 6c 6c 65 64 2e 2e 2e 20 | 74 68 61 74 20 69 73 2c |lled... |that is,|
|00005440| 20 61 73 73 75 6d 69 6e | 67 20 77 65 20 61 63 74 | assumin|g we act|
|00005450| 75 61 6c 6c 79 20 2d 68 | 61 76 65 2d 0d 09 09 09 |ually -h|ave-....|
|00005460| 2f 2f 20 73 6f 6d 65 20 | 64 61 74 61 20 74 6f 20 |// some |data to |
|00005470| 6d 6f 76 65 20 75 70 77 | 61 72 64 73 2e 2e 2e 0d |move upw|ards....|
|00005480| 09 09 09 2f 2f 0d 09 09 | 09 69 66 20 28 65 6e 64 |...//...|.if (end|
|00005490| 20 2d 20 28 50 74 72 29 | 20 6e 65 78 74 29 0d 09 | - (Ptr)| next)..|
|000054a0| 09 09 09 42 6c 6f 63 6b | 4d 6f 76 65 44 61 74 61 |...Block|MoveData|
|000054b0| 28 6e 65 78 74 2c 20 28 | 50 74 72 29 20 70 72 6f |(next, (|Ptr) pro|
|000054c0| 70 2c 20 65 6e 64 20 2d | 20 28 50 74 72 29 20 6e |p, end -| (Ptr) n|
|000054d0| 65 78 74 29 3b 09 0d 0d | 09 09 09 2f 2f 0d 09 09 |ext);...|...//...|
|000054e0| 09 2f 2f 20 55 70 64 61 | 74 65 20 74 68 65 20 73 |.// Upda|te the s|
|000054f0| 69 7a 65 20 69 6e 66 6f | 72 6d 61 74 69 6f 6e 20 |ize info|rmation |
|00005500| 28 73 75 62 74 72 61 63 | 74 20 6f 75 74 20 74 68 |(subtrac|t out th|
|00005510| 65 20 73 69 7a 65 20 6f | 66 20 74 68 65 20 70 72 |e size o|f the pr|
|00005520| 6f 70 65 72 74 79 20 77 | 65 20 6a 75 73 74 20 6b |operty w|e just k|
|00005530| 69 6c 6c 65 64 29 0d 09 | 09 09 2f 2f 09 0d 09 09 |illed)..|..//....|
|00005540| 09 70 72 6f 70 65 72 74 | 79 43 61 63 68 65 48 65 |.propert|yCacheHe|
|00005550| 61 64 65 72 2d 3e 66 4f | 62 6a 65 63 74 43 61 63 |ader->fO|bjectCac|
|00005560| 68 65 48 65 61 64 65 72 | 2e 66 55 73 65 64 20 2d |heHeader|.fUsed -|
|00005570| 3d 20 28 20 6e 65 78 74 | 20 2d 20 28 28 50 74 72 |= ( next| - ((Ptr|
|00005580| 29 20 70 72 6f 70 29 20 | 29 3b 0d 09 09 09 0d 09 |) prop) |);......|
|00005590| 09 09 2f 2f 0d 09 09 09 | 2f 2f 20 46 6c 75 73 68 |..//....|// Flush|
|000055a0| 20 74 68 65 20 22 6c 61 | 73 74 20 70 72 6f 70 65 | the "la|st prope|
|000055b0| 72 74 79 22 20 63 61 63 | 68 65 20 6f 66 20 74 68 |rty" cac|he of th|
|000055c0| 65 20 6c 61 73 74 20 70 | 72 6f 70 65 72 74 79 20 |e last p|roperty |
|000055d0| 77 65 20 6c 6f 6f 6b 65 | 64 20 75 70 0d 09 09 09 |we looke|d up....|
|000055e0| 2f 2f 0d 09 09 09 70 72 | 6f 70 65 72 74 79 43 61 |//....pr|opertyCa|
|000055f0| 63 68 65 48 65 61 64 65 | 72 2d 3e 66 4c 61 73 74 |cheHeade|r->fLast|
|00005600| 50 72 6f 70 65 72 74 79 | 20 09 09 3d 20 30 3b 0d |Property| ..= 0;.|
|00005610| 09 09 09 70 72 6f 70 65 | 72 74 79 43 61 63 68 65 |...prope|rtyCache|
|00005620| 48 65 61 64 65 72 2d 3e | 66 4c 61 73 74 50 72 6f |Header->|fLastPro|
|00005630| 70 65 72 74 79 50 74 72 | 20 09 3d 20 6e 69 6c 3b |pertyPtr| .= nil;|
|00005640| 0d 09 09 09 7d 0d 09 09 | 7d 0d 09 7d 20 2f 2f 20 |....}...|}..} // |
|00005650| 54 4f 62 6a 65 63 74 50 | 72 6f 70 65 72 74 79 43 |TObjectP|ropertyC|
|00005660| 61 63 68 65 3a 3a 52 65 | 6d 6f 76 65 50 72 6f 70 |ache::Re|moveProp|
|00005670| 65 72 74 79 20 0d 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |erty ../|/-------|
|00005680| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005690| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056d0| 2d 0d 2f 2f 20 54 4f 62 | 6a 65 63 74 50 72 6f 70 |-.// TOb|jectProp|
|000056e0| 65 72 74 79 43 61 63 68 | 65 3a 3a 47 65 74 50 72 |ertyCach|e::GetPr|
|000056f0| 6f 70 65 72 74 79 55 49 | 6e 74 31 36 3a 20 0d 2f |opertyUI|nt16: ./|
|00005700| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00005710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005730| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005750| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 42 6f 6f 6c 65 61 |--------|-.Boolea|
|00005760| 6e 20 54 4f 62 6a 65 63 | 74 50 72 6f 70 65 72 74 |n TObjec|tPropert|
|00005770| 79 43 61 63 68 65 3a 3a | 47 65 74 50 72 6f 70 65 |yCache::|GetPrope|
|00005780| 72 74 79 55 49 6e 74 31 | 36 28 54 50 72 6f 70 65 |rtyUInt1|6(TPrope|
|00005790| 72 74 79 20 70 72 6f 70 | 65 72 74 79 2c 20 55 49 |rty prop|erty, UI|
|000057a0| 6e 74 31 36 2a 20 64 61 | 74 61 50 74 72 29 20 63 |nt16* da|taPtr) c|
|000057b0| 6f 6e 73 74 0d 09 7b 0d | 09 42 6f 6f 6c 65 61 6e |onst..{.|.Boolean|
|000057c0| 20 72 65 73 75 6c 74 20 | 3d 20 66 61 6c 73 65 3b | result |= false;|
|000057d0| 0d 09 54 4f 62 6a 65 63 | 74 50 72 6f 70 65 72 74 |..TObjec|tPropert|
|000057e0| 79 43 61 63 68 65 48 65 | 61 64 65 72 2a 20 70 72 |yCacheHe|ader* pr|
|000057f0| 6f 70 65 72 74 79 43 61 | 63 68 65 48 65 61 64 65 |opertyCa|cheHeade|
|00005800| 72 20 3d 20 50 72 6f 70 | 65 72 74 79 43 61 63 68 |r = Prop|ertyCach|
|00005810| 65 44 61 74 61 50 74 72 | 28 29 3b 0d 0d 09 69 66 |eDataPtr|();...if|
|00005820| 20 28 70 72 6f 70 65 72 | 74 79 43 61 63 68 65 48 | (proper|tyCacheH|
|00005830| 65 61 64 65 72 29 0d 09 | 09 7b 0d 09 09 54 4f 62 |eader)..|.{...TOb|
|00005840| 6a 65 63 74 50 72 6f 70 | 65 72 74 79 43 61 63 68 |jectProp|ertyCach|
|00005850| 65 50 72 6f 70 65 72 74 | 79 2a 20 70 72 6f 70 20 |ePropert|y* prop |
|00005860| 3d 20 4c 6f 6f 6b 75 70 | 50 72 6f 70 65 72 74 79 |= Lookup|Property|
|00005870| 46 61 73 74 28 70 72 6f | 70 65 72 74 79 29 3b 0d |Fast(pro|perty);.|
|00005880| 09 0d 09 09 69 66 20 28 | 21 70 72 6f 70 29 0d 09 |....if (|!prop)..|
|00005890| 09 09 70 72 6f 70 20 3d | 20 4c 6f 6f 6b 75 70 50 |..prop =| LookupP|
|000058a0| 72 6f 70 65 72 74 79 28 | 70 72 6f 70 65 72 74 79 |roperty(|property|
|000058b0| 29 3b 0d 09 0d 09 09 69 | 66 20 28 70 72 6f 70 29 |);.....i|f (prop)|
|000058c0| 0d 09 09 09 7b 0d 09 09 | 09 2a 64 61 74 61 50 74 |....{...|.*dataPt|
|000058d0| 72 20 3d 20 2a 20 28 55 | 49 6e 74 31 36 2a 29 20 |r = * (U|Int16*) |
|000058e0| 28 20 28 28 50 74 72 29 | 20 70 72 6f 70 29 20 2b |( ((Ptr)| prop) +|
|000058f0| 20 73 69 7a 65 6f 66 28 | 54 4f 62 6a 65 63 74 50 | sizeof(|TObjectP|
|00005900| 72 6f 70 65 72 74 79 43 | 61 63 68 65 50 72 6f 70 |ropertyC|acheProp|
|00005910| 65 72 74 79 29 29 3b 0d | 09 09 09 72 65 73 75 6c |erty));.|...resul|
|00005920| 74 20 3d 20 74 72 75 65 | 3b 0d 09 09 09 7d 0d 09 |t = true|;....}..|
|00005930| 09 7d 0d 09 09 0d 09 72 | 65 74 75 72 6e 20 72 65 |.}.....r|eturn re|
|00005940| 73 75 6c 74 3b 0d 09 7d | 20 2f 2f 20 54 4f 62 6a |sult;..}| // TObj|
|00005950| 65 63 74 50 72 6f 70 65 | 72 74 79 43 61 63 68 65 |ectPrope|rtyCache|
|00005960| 3a 3a 47 65 74 50 72 6f | 70 65 72 74 79 55 49 6e |::GetPro|pertyUIn|
|00005970| 74 31 36 20 0d 0d 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |t16 .../|/-------|
|00005980| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005990| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000059a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000059b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000059c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000059d0| 2d 0d 2f 2f 20 54 4f 62 | 6a 65 63 74 50 72 6f 70 |-.// TOb|jectProp|
|000059e0| 65 72 74 79 43 61 63 68 | 65 3a 3a 47 65 74 50 72 |ertyCach|e::GetPr|
|000059f0| 6f 70 65 72 74 79 55 49 | 6e 74 33 32 3a 20 0d 2f |opertyUI|nt32: ./|
|00005a00| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00005a10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005a20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005a30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005a40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005a50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 42 6f 6f 6c 65 61 |--------|-.Boolea|
|00005a60| 6e 20 54 4f 62 6a 65 63 | 74 50 72 6f 70 65 72 74 |n TObjec|tPropert|
|00005a70| 79 43 61 63 68 65 3a 3a | 47 65 74 50 72 6f 70 65 |yCache::|GetPrope|
|00005a80| 72 74 79 55 49 6e 74 33 | 32 28 54 50 72 6f 70 65 |rtyUInt3|2(TPrope|
|00005a90| 72 74 79 20 70 72 6f 70 | 65 72 74 79 2c 20 55 49 |rty prop|erty, UI|
|00005aa0| 6e 74 33 32 2a 20 64 61 | 74 61 50 74 72 29 20 63 |nt32* da|taPtr) c|
|00005ab0| 6f 6e 73 74 0d 09 7b 0d | 09 42 6f 6f 6c 65 61 6e |onst..{.|.Boolean|
|00005ac0| 20 72 65 73 75 6c 74 20 | 3d 20 66 61 6c 73 65 3b | result |= false;|
|00005ad0| 0d 09 54 4f 62 6a 65 63 | 74 50 72 6f 70 65 72 74 |..TObjec|tPropert|
|00005ae0| 79 43 61 63 68 65 48 65 | 61 64 65 72 2a 20 70 72 |yCacheHe|ader* pr|
|00005af0| 6f 70 65 72 74 79 43 61 | 63 68 65 48 65 61 64 65 |opertyCa|cheHeade|
|00005b00| 72 20 3d 20 50 72 6f 70 | 65 72 74 79 43 61 63 68 |r = Prop|ertyCach|
|00005b10| 65 44 61 74 61 50 74 72 | 28 29 3b 0d 0d 09 69 66 |eDataPtr|();...if|
|00005b20| 20 28 70 72 6f 70 65 72 | 74 79 43 61 63 68 65 48 | (proper|tyCacheH|
|00005b30| 65 61 64 65 72 29 0d 09 | 09 7b 0d 09 09 54 4f 62 |eader)..|.{...TOb|
|00005b40| 6a 65 63 74 50 72 6f 70 | 65 72 74 79 43 61 63 68 |jectProp|ertyCach|
|00005b50| 65 50 72 6f 70 65 72 74 | 79 2a 20 70 72 6f 70 20 |ePropert|y* prop |
|00005b60| 3d 20 4c 6f 6f 6b 75 70 | 50 72 6f 70 65 72 74 79 |= Lookup|Property|
|00005b70| 46 61 73 74 28 70 72 6f | 70 65 72 74 79 29 3b 0d |Fast(pro|perty);.|
|00005b80| 09 0d 09 09 69 66 20 28 | 21 70 72 6f 70 29 0d 09 |....if (|!prop)..|
|00005b90| 09 09 70 72 6f 70 20 3d | 20 4c 6f 6f 6b 75 70 50 |..prop =| LookupP|
|00005ba0| 72 6f 70 65 72 74 79 28 | 70 72 6f 70 65 72 74 79 |roperty(|property|
|00005bb0| 29 3b 0d 09 0d 09 09 69 | 66 20 28 70 72 6f 70 29 |);.....i|f (prop)|
|00005bc0| 0d 09 09 09 7b 0d 09 09 | 09 2a 64 61 74 61 50 74 |....{...|.*dataPt|
|00005bd0| 72 20 3d 20 2a 20 28 55 | 49 6e 74 33 32 2a 29 20 |r = * (U|Int32*) |
|00005be0| 28 20 28 28 50 74 72 29 | 20 70 72 6f 70 29 20 2b |( ((Ptr)| prop) +|
|00005bf0| 20 73 69 7a 65 6f 66 28 | 54 4f 62 6a 65 63 74 50 | sizeof(|TObjectP|
|00005c00| 72 6f 70 65 72 74 79 43 | 61 63 68 65 50 72 6f 70 |ropertyC|acheProp|
|00005c10| 65 72 74 79 29 29 3b 0d | 09 09 09 72 65 73 75 6c |erty));.|...resul|
|00005c20| 74 20 3d 20 74 72 75 65 | 3b 0d 09 09 09 7d 0d 09 |t = true|;....}..|
|00005c30| 09 7d 0d 09 09 0d 09 72 | 65 74 75 72 6e 20 72 65 |.}.....r|eturn re|
|00005c40| 73 75 6c 74 3b 0d 09 7d | 20 2f 2f 20 54 4f 62 6a |sult;..}| // TObj|
|00005c50| 65 63 74 50 72 6f 70 65 | 72 74 79 43 61 63 68 65 |ectPrope|rtyCache|
|00005c60| 3a 3a 47 65 74 50 72 6f | 70 65 72 74 79 55 49 6e |::GetPro|pertyUIn|
|00005c70| 74 33 32 20 0d 0d 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |t32 .../|/-------|
|00005c80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005c90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005ca0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005cb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005cc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005cd0| 2d 0d 2f 2f 20 54 4f 62 | 6a 65 63 74 50 72 6f 70 |-.// TOb|jectProp|
|00005ce0| 65 72 74 79 43 61 63 68 | 65 3a 3a 47 65 74 50 72 |ertyCach|e::GetPr|
|00005cf0| 6f 70 65 72 74 79 49 6e | 74 36 34 3a 20 0d 2f 2f |opertyIn|t64: .//|
|00005d00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d50| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 42 6f 6f 6c 65 61 6e |--------|.Boolean|
|00005d60| 20 54 4f 62 6a 65 63 74 | 50 72 6f 70 65 72 74 79 | TObject|Property|
|00005d70| 43 61 63 68 65 3a 3a 47 | 65 74 50 72 6f 70 65 72 |Cache::G|etProper|
|00005d80| 74 79 49 6e 74 36 34 28 | 54 50 72 6f 70 65 72 74 |tyInt64(|TPropert|
|00005d90| 79 20 70 72 6f 70 65 72 | 74 79 2c 20 49 6e 74 36 |y proper|ty, Int6|
|00005da0| 34 2a 20 64 61 74 61 50 | 74 72 29 20 63 6f 6e 73 |4* dataP|tr) cons|
|00005db0| 74 0d 09 7b 0d 09 42 6f | 6f 6c 65 61 6e 20 72 65 |t..{..Bo|olean re|
|00005dc0| 73 75 6c 74 20 3d 20 66 | 61 6c 73 65 3b 0d 09 54 |sult = f|alse;..T|
|00005dd0| 4f 62 6a 65 63 74 50 72 | 6f 70 65 72 74 79 43 61 |ObjectPr|opertyCa|
|00005de0| 63 68 65 48 65 61 64 65 | 72 2a 20 70 72 6f 70 65 |cheHeade|r* prope|
|00005df0| 72 74 79 43 61 63 68 65 | 48 65 61 64 65 72 20 3d |rtyCache|Header =|
|00005e00| 20 50 72 6f 70 65 72 74 | 79 43 61 63 68 65 44 61 | Propert|yCacheDa|
|00005e10| 74 61 50 74 72 28 29 3b | 0d 0d 09 69 66 20 28 70 |taPtr();|...if (p|
|00005e20| 72 6f 70 65 72 74 79 43 | 61 63 68 65 48 65 61 64 |ropertyC|acheHead|
|00005e30| 65 72 29 0d 09 09 7b 0d | 09 09 54 4f 62 6a 65 63 |er)...{.|..TObjec|
|00005e40| 74 50 72 6f 70 65 72 74 | 79 43 61 63 68 65 50 72 |tPropert|yCachePr|
|00005e50| 6f 70 65 72 74 79 2a 20 | 70 72 6f 70 20 3d 20 4c |operty* |prop = L|
|00005e60| 6f 6f 6b 75 70 50 72 6f | 70 65 72 74 79 46 61 73 |ookupPro|pertyFas|
|00005e70| 74 28 70 72 6f 70 65 72 | 74 79 29 3b 0d 09 0d 09 |t(proper|ty);....|
|00005e80| 09 69 66 20 28 21 70 72 | 6f 70 29 0d 09 09 09 70 |.if (!pr|op)....p|
|00005e90| 72 6f 70 20 3d 20 4c 6f | 6f 6b 75 70 50 72 6f 70 |rop = Lo|okupProp|
|00005ea0| 65 72 74 79 28 70 72 6f | 70 65 72 74 79 29 3b 0d |erty(pro|perty);.|
|00005eb0| 09 0d 09 09 69 66 20 28 | 70 72 6f 70 29 0d 09 09 |....if (|prop)...|
|00005ec0| 09 7b 0d 09 09 09 2a 64 | 61 74 61 50 74 72 20 3d |.{....*d|ataPtr =|
|00005ed0| 20 2a 20 28 49 6e 74 36 | 34 2a 29 20 28 20 28 28 | * (Int6|4*) ( ((|
|00005ee0| 50 74 72 29 20 70 72 6f | 70 29 20 2b 20 73 69 7a |Ptr) pro|p) + siz|
|00005ef0| 65 6f 66 28 54 4f 62 6a | 65 63 74 50 72 6f 70 65 |eof(TObj|ectPrope|
|00005f00| 72 74 79 43 61 63 68 65 | 50 72 6f 70 65 72 74 79 |rtyCache|Property|
|00005f10| 29 29 3b 0d 09 09 09 72 | 65 73 75 6c 74 20 3d 20 |));....r|esult = |
|00005f20| 74 72 75 65 3b 0d 09 09 | 09 7d 0d 09 09 7d 0d 09 |true;...|.}...}..|
|00005f30| 09 0d 09 72 65 74 75 72 | 6e 20 72 65 73 75 6c 74 |...retur|n result|
|00005f40| 3b 0d 09 7d 20 2f 2f 20 | 54 4f 62 6a 65 63 74 50 |;..} // |TObjectP|
|00005f50| 72 6f 70 65 72 74 79 43 | 61 63 68 65 3a 3a 47 65 |ropertyC|ache::Ge|
|00005f60| 74 50 72 6f 70 65 72 74 | 79 49 6e 74 36 34 20 0d |tPropert|yInt64 .|
|00005f70| 0d 2f 2f 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.//-----|--------|
|00005f80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005f90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005fa0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005fb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005fc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 2f 2f 20 54 |--------|---.// T|
|00005fd0| 4f 62 6a 65 63 74 50 72 | 6f 70 65 72 74 79 43 61 |ObjectPr|opertyCa|
|00005fe0| 63 68 65 3a 3a 47 65 74 | 50 72 6f 70 65 72 74 79 |che::Get|Property|
|00005ff0| 54 53 74 72 69 6e 67 50 | 74 72 3a 20 0d 2f 2f 2d |TStringP|tr: .//-|
|00006000| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006010| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006020| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006030| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006040| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006050| 2d 2d 2d 2d 2d 2d 2d 0d | 75 6e 73 69 67 6e 65 64 |-------.|unsigned|
|00006060| 20 63 68 61 72 2a 20 54 | 4f 62 6a 65 63 74 50 72 | char* T|ObjectPr|
|00006070| 6f 70 65 72 74 79 43 61 | 63 68 65 3a 3a 47 65 74 |opertyCa|che::Get|
|00006080| 50 72 6f 70 65 72 74 79 | 54 53 74 72 69 6e 67 50 |Property|TStringP|
|00006090| 74 72 28 54 50 72 6f 70 | 65 72 74 79 20 70 72 6f |tr(TProp|erty pro|
|000060a0| 70 65 72 74 79 29 20 63 | 6f 6e 73 74 0d 09 7b 0d |perty) c|onst..{.|
|000060b0| 09 75 6e 73 69 67 6e 65 | 64 20 63 68 61 72 2a 20 |.unsigne|d char* |
|000060c0| 72 65 73 75 6c 74 20 3d | 20 6e 69 6c 3b 0d 09 54 |result =| nil;..T|
|000060d0| 4f 62 6a 65 63 74 50 72 | 6f 70 65 72 74 79 43 61 |ObjectPr|opertyCa|
|000060e0| 63 68 65 48 65 61 64 65 | 72 2a 20 70 72 6f 70 65 |cheHeade|r* prope|
|000060f0| 72 74 79 43 61 63 68 65 | 48 65 61 64 65 72 20 3d |rtyCache|Header =|
|00006100| 20 50 72 6f 70 65 72 74 | 79 43 61 63 68 65 44 61 | Propert|yCacheDa|
|00006110| 74 61 50 74 72 28 29 3b | 0d 0d 09 69 66 20 28 70 |taPtr();|...if (p|
|00006120| 72 6f 70 65 72 74 79 43 | 61 63 68 65 48 65 61 64 |ropertyC|acheHead|
|00006130| 65 72 29 0d 09 09 7b 0d | 09 09 54 4f 62 6a 65 63 |er)...{.|..TObjec|
|00006140| 74 50 72 6f 70 65 72 74 | 79 43 61 63 68 65 50 72 |tPropert|yCachePr|
|00006150| 6f 70 65 72 74 79 2a 20 | 70 72 6f 70 20 3d 20 4c |operty* |prop = L|
|00006160| 6f 6f 6b 75 70 50 72 6f | 70 65 72 74 79 46 61 73 |ookupPro|pertyFas|
|00006170| 74 28 70 72 6f 70 65 72 | 74 79 29 3b 0d 09 0d 09 |t(proper|ty);....|
|00006180| 09 69 66 20 28 21 70 72 | 6f 70 29 0d 09 09 09 70 |.if (!pr|op)....p|
|00006190| 72 6f 70 20 3d 20 4c 6f | 6f 6b 75 70 50 72 6f 70 |rop = Lo|okupProp|
|000061a0| 65 72 74 79 28 70 72 6f | 70 65 72 74 79 29 3b 0d |erty(pro|perty);.|
|000061b0| 09 0d 09 09 69 66 20 28 | 70 72 6f 70 29 0d 09 09 |....if (|prop)...|
|000061c0| 09 7b 0d 09 09 09 72 65 | 73 75 6c 74 20 3d 20 28 |.{....re|sult = (|
|000061d0| 75 6e 73 69 67 6e 65 64 | 20 63 68 61 72 2a 29 20 |unsigned| char*) |
|000061e0| 26 70 72 6f 70 2d 3e 66 | 53 74 72 69 6e 67 53 69 |&prop->f|StringSi|
|000061f0| 7a 65 3b 0d 09 09 09 7d | 0d 09 09 7d 0d 09 09 0d |ze;....}|...}....|
|00006200| 09 72 65 74 75 72 6e 20 | 72 65 73 75 6c 74 3b 0d |.return |result;.|
|00006210| 09 7d 20 2f 2f 20 54 4f | 62 6a 65 63 74 50 72 6f |.} // TO|bjectPro|
|00006220| 70 65 72 74 79 43 61 63 | 68 65 3a 3a 47 65 74 50 |pertyCac|he::GetP|
|00006230| 72 6f 70 65 72 74 79 49 | 6e 74 36 34 20 0d 0d 0d |ropertyI|nt64 ...|
|00006240| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00006250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 2f 2f 20 54 4f |--------|--.// TO|
|000062a0| 62 6a 65 63 74 50 72 6f | 70 65 72 74 79 43 61 63 |bjectPro|pertyCac|
|000062b0| 68 65 3a 3a 47 65 74 50 | 72 6f 70 65 72 74 79 54 |he::GetP|ropertyT|
|000062c0| 53 74 72 69 6e 67 3a 20 | 0d 2f 2f 2d 2d 2d 2d 2d |String: |.//-----|
|000062d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000062e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000062f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006310| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006320| 2d 2d 2d 0d 42 6f 6f 6c | 65 61 6e 20 54 4f 62 6a |---.Bool|ean TObj|
|00006330| 65 63 74 50 72 6f 70 65 | 72 74 79 43 61 63 68 65 |ectPrope|rtyCache|
|00006340| 3a 3a 47 65 74 50 72 6f | 70 65 72 74 79 54 53 74 |::GetPro|pertyTSt|
|00006350| 72 69 6e 67 28 54 50 72 | 6f 70 65 72 74 79 20 70 |ring(TPr|operty p|
|00006360| 72 6f 70 65 72 74 79 2c | 20 75 6e 73 69 67 6e 65 |roperty,| unsigne|
|00006370| 64 20 63 68 61 72 2a 20 | 64 65 73 74 69 6e 61 74 |d char* |destinat|
|00006380| 69 6f 6e 46 6f 72 50 53 | 74 72 69 6e 67 29 20 63 |ionForPS|tring) c|
|00006390| 6f 6e 73 74 0d 09 7b 0d | 09 42 6f 6f 6c 65 61 6e |onst..{.|.Boolean|
|000063a0| 20 72 65 73 75 6c 74 20 | 3d 20 66 61 6c 73 65 3b | result |= false;|
|000063b0| 0d 09 54 4f 62 6a 65 63 | 74 50 72 6f 70 65 72 74 |..TObjec|tPropert|
|000063c0| 79 43 61 63 68 65 48 65 | 61 64 65 72 2a 20 70 72 |yCacheHe|ader* pr|
|000063d0| 6f 70 65 72 74 79 43 61 | 63 68 65 48 65 61 64 65 |opertyCa|cheHeade|
|000063e0| 72 20 3d 20 50 72 6f 70 | 65 72 74 79 43 61 63 68 |r = Prop|ertyCach|
|000063f0| 65 44 61 74 61 50 74 72 | 28 29 3b 0d 0d 09 69 66 |eDataPtr|();...if|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.